毕业快两年了,努力工作,像坐火箭似的提升了半年多,也浮躁了半年多。这半年多来基本处于迷茫期,可能是因为刚毕业的半年提升速度太快,而现在基本没什么提升,前后反差太大,而导致的一种恐慌吧。和很多前辈聊过,后来也不停的看帖子,试图寻找类似的经历以及度过这段“瓶颈期”的方法。后来静下心来总结了一下,发现,不是现在提升太慢,是现在心里太浮躁,看什么都静不下心来,很多看似很难的东西不愿意自己去尝试,去突破自己。
废话了半天,从今天开始就踏踏实实踏出第一步吧。
回想起之前手游项目的前端框架功能,自己也尝试着构建一些前端的框架吧。
前端的消息系统,即前端自己的通讯机制,方便前端开发人员实现对象间的数据传递。
为什么前端需要进行对象间的数据传递呢?(讲到这就太基础了。。懂得同学不要吐槽。。因为我自己找资料看东西的时候碰到一些略过基础讲解的,看的会不太明白,这样讲对一些刚接触的同学是好事儿吧)
举个很简单的栗子。前端收到玩家角色面板的一个数据时(比如玩家升级了,面板上的等级数字需要改变)。这时候,接收服务器数据的方法肯定在相关的消息类里,开发人员需要通过这个类,把数据传递给角色面板。(如果你把接收数据的方法放在面板里,当你升级的时候,面板是关着的话,升级不就失败了?)这里就就涉及到一个模式,观察者模式(不了解的同学自行百度,但是建议看完下面的代码再看这个设计模式)。
这样,结构就很清晰了,在接收服务器的类里完成数据的处理,然后发消息给角色面板,如果面板是关着的,当然就接收不到发来的数据了。当面板是开着的,因为面板已经注册为该消息的观察者了,所以会收到数据更新,从而对面板上的显示进行相关的更新。
下面贴出前端消息功能的框架代码:
using UnityEngine;
using System.Collections.Generic;
public class MsgController
{
private static MsgController instance;
public delegate void EventHandler(Message message);
private Dictionary
> msgDic;
private MsgController()
{
msgDic = new Dictionary
>();
}
public static MsgController GetInstance()
{
if (instance == null)
{
instance = new MsgController();
}
return instance;
}
public void AddListener(string msgName, EventHandler eventHandler)
{
if (msgDic.ContainsKey(msgName))
{
msgDic[msgName].Add(eventHandler);
}
else
{
List
list = new List
();
list.Add(eventHandler);
msgDic.Add(msgName, list);
}
}
public void RemoveListener(string msgName)
{
if (msgDic.ContainsKey(msgName))
{
msgDic[msgName].Clear();
msgDic.Remove(msgName);
}
}
public void SendMsg(string msgName, Message msg)
{
if (msgDic.ContainsKey(msgName))
{
foreach(EventHandler handler in msgDic[msgName])
{
handler(msg);
}
}
}
}
Message是个自定义的类。用来装载一些通讯常用的数据,比如发送者,消息体之类的。
第一次老老实实自己写一篇博客,膜拜一下那些指引过我的博客大神。
因为自己也是边研究边写,更新不会很快吧。虽然慢,但这何尝不是磨自己性子的过程呢。这种记录自己所得,又可以帮助到别人的好事儿,何乐不为呢。希望可以坚持下去吧。希望自己可以把我住这段时间,踏踏实实的学好自己需要的,早日完成自己的目标。