消息中心 UI NPC Enemy 刷新血量 技能面板 属性面板 背包 铁匠 防具 路人 狼 僵尸 Manager ComponentBase cc.component Message MessageCenter ComponentBase继承cc.Component,并增加接收消息功能,之后每个类都继承ComponentBase 基本类 Message Type : number Command : number Content : any constructor(type, command, content) MessageType static Type_UI static Type_Npc static Type_Enemy static Type_Audio ... MessageCommand static UI_RefreshHP static UI_RefreshScore ... extend ComponentBase ReceiveMessage(message: Message) ccComponet extend ManagerBase ReceiveList: ComponentBase[] = [] messgeType: number onLoad() SetMessageType() : MessageType RegisterReceiver(cb: ComponentBase) ReceiveMessage(message: Message) ComponentBase MessageCenter负责管理管理类发送消息, 切所有方法属性均为静态,已实现全局调用 MessageCenter static Managers: ComponentBase[] = [] static SendMessage(msg: Message) static SendCustomMessage(type: number, command: number, content: any) player相当于一个发送信息的类,其内部调用MessageCenter.SendCustomMessage()发送消息 Player start() UIManager继承ManagerBase extend UIManager static Instance: UIManager onLoad() SetMessageType() ManagerBase HopControl未接收消息后实在的动作执行者 HpControl hp: number = 100 start() ReceiveMessage(msg: Message) ChangeHp(attack) 消息框架工作流程 注册为UIManager的消息接受者 管理消息接受者 调用 发消息 发消息给HPControlle Controls 注册为UIManager的消息接受者 接收消息 调用 extend ChangeHp(attack) HpControl UIManager.Instance.RegisterReciver(this) ReceiveMessage(msg: Messge) ComponentBase Managers 初始化 设置消息类型 extend SetMessgeType() UIManager UIManager.Instance = this ManagerBase Players extend 调用 cc.Component player MessageCenter.SendCustomMessage() MessageCenter 接收消息 业务真正处理 管理消息接收者