基于消息机制的Unity框架

基于消息机制的Unity框架
701人加入学习
(31人评价)
价格 ¥7.92 ¥ 9.90 8折
活动
承诺服务
会员免费学 购买课程

MonoBase为该框架基类,继承MonoBehaviour,来扩展系统类,定义一个虚方法Execute,来让MonoBase的子类可以重写Execute方法,实现相应功能

 

MsgCenter为消息处理中心,继承MonoBase,只负责消息在各模块之间的转发,重写Execute(处理消息)Dispatch:发送消息,系统里所有的消息都通过该方法来发送,参数为(区域码,事件码,消息体):

参数1:识别到是什么模块

参数2:识别到做什么动作

参数3:该动作使用到的消息体

 

AreaCode为区域码,代表模块,定义不同的常量来区分不同模块

 

ManagerBase为每个模块的基类,所有模块管理器需要继承该基类,保存自身注册的一系列消息 

 

AudioManager为声音模块管理器

[展开全文]

MonoBase为该框架基类,继承MonoBehaviour,来扩展系统类,定义一个虚方法Execute,来让MonoBase的子类可以重写Execute方法,实现相应功能

 

MsgCenter为消息处理中心,继承MonoBase,只负责消息在各模块之间的转发,重写Execute(处理消息)Dispatch:发送消息,系统里所有的消息都通过该方法来发送,参数为(区域码,事件码,消息体):

参数1:识别到是什么模块

参数2:识别到做什么动作

参数3:该动作使用到的消息体

 

AreaCode为区域码,代表模块,定义不同的常量来区分不同模块

 

ManagerBase为每个模块的基类,所有模块管理器需要继承该基类,保存自身注册的一系列消息 

 

AudioManager为声音模块管理器

[展开全文]

MonoBase为该框架基类,继承MonoBehaviour,来扩展系统类,定义一个虚方法Execute,来让MonoBase的子类可以重写Execute方法,实现相应功能

 

MsgCenter为消息处理中心,继承MonoBase,只负责消息在各模块之间的转发,重写Execute(处理消息)Dispatch:发送消息,系统里所有的消息都通过该方法来发送,参数为(区域码,事件码,消息体):

参数1:识别到是什么模块

参数2:识别到做什么动作

参数3:该动作使用到的消息体

 

AreaCode为区域码,代表模块,定义不同的常量来区分不同模块

 

ManagerBase为每个模块的基类,保存自身注册的一系列消息 

[展开全文]

使用Unity来开发,可以快速开发一款游戏。

当开发一些大型的单机或者网络游戏时候,必须使用一些其他框架或者优化机制来解决模块之间的耦合性,也就是一个模块如何调用另一个模块。

使用单例模式框架:直接用Instance来调用脚本方法,但是耦合度很高

MVC框架:脚本之间独立,各种通信由中间的控制层控制

基于消息机制框架:就好比人类一样,两个人要交流必须要事先沟通好,然后程序按照这个规定进行。一个发送者,发出一个消息,还有一个接受者接收到这个消息,或者多个接受者接收,选择处理或者不处理。目的是为了解耦合

[展开全文]

1.MonoBase

用来扩展MonoBehavior:

public virtual void Execute( ){ }//用来处理消息

2.MsgCenter : MonoBase

消息处理中心:并不是把消息都放在一个脚本里,仅负责消息的转发!!!

eg: UI->MsgCenter->character

重写Execute:处理消息

public void Dispatch(){}:所有消息都用这个发送

3.

[展开全文]

AudioBase辅助类继承MonoBase类

 

[展开全文]

区域码代表模块,根据区域码,区分不同的模块。

消息处理中心:只负责消息的转发。

Dispatch(int xx,int yy,object oo ):转发消息函数,xx是区域码,用来识别模块;yy是事件码,用来区分做什么事情的;oo表示:比如角色向前移动,oo在这里表示方向。

ManagerBase:表示每个模块的基类

1、保存自身注册的一系列消息

2、用于每个具体的模块继承

Dictionary<int,<List<MonoBase>>

list.Remove():??

 

[展开全文]

区域码代表模块,根据区域码,区分不同的模块。

消息处理中心:只负责消息的转发。

Dispatch(int xx,int yy,object oo ):转发消息函数,xx是区域码,用来识别模块;yy是事件码,用来区分做什么事情的;oo表示:比如角色向前移动,oo在这里表示方向。

 

[展开全文]
wjb11 · 2019-09-03 · 完善MsgCenter 0

区域码代表模块,根据区域码,区分不同的模块。

消息处理中心:只负责消息的转发。

Dispatch(int xx):转发消息函数,xx是区域码

 

[展开全文]

只属模块,可以直接处理,不同模块需要通过消息中心进行转发。

 

[展开全文]
wjb11 · 2019-09-03 · 问题提出 0

处理消息 需要重写monobase里的EXECUT方法  

 

重写  Override (int eventcode  object message)

 

先判断是否注册过   

[展开全文]

framework   框架   父类

  MonoBase   需要扩展Unity的功能  不能修改 但可以根据正则表达式  所有父类出现的地方 子类都可以出现 

需要实现什么功能  可以

定义一个虚方法(Virtual,所有继承的类都可以重写 修改代码 )  

Execute (处理消息)

 

Msg Center (相当于基站 转发消息)

             ui->Msg->character

 UI模块的消息  通过Msg转发到人物模块身上 

创建一个方法 :

里面传递 模块码 事件码 消息事件(Object类型 可以根据模块进行强转)

 

定义一个类  :

AreaCode  区域码  代表每个模块 

给给个模块定义一个编码 

(const :只可以访问 不可以修改 )

public const int ui=0;

如 ui==1

    game==2 

    Net===3

   Audio==4

........

定义一个类

mangerBase

模块的基类。

保存自身注册的一系列消息。

 

 

识别区域码    

通过

根据不同的区域码对不同模块传递不同的信息

[展开全文]

framework   框架   父类

  MonoBase   需要扩展Unity的功能  不能修改 但可以根据正则表达式  所有父类出现的地方 子类都可以出现 

需要实现什么功能  可以

定义一个虚方法(Virtual,所有继承的类都可以重写 修改代码 )  

Execute (处理消息)

 

Msg Center (相当于基站 转发消息)

             ui->Msg->character

 UI模块的消息  通过Msg转发到人物模块身上 

创建一个方法 :

里面传递 模块码 事件码 消息事件(Object类型 可以根据模块进行强转)

 

定义一个类  :

AreaCode  区域码  代表每个模块 

给给个模块定义一个编码 

(const :只可以访问 不可以修改 )

public const int ui=0;

如 ui==1

    game==2 

    Net===3

   Audio==4

........

 

 

 

识别区域码    

通过

根据不同的区域码对不同模块传递不同的信息

 

 

 

[展开全文]

MsgCenter :消息处理中心--转发消息

AreaCode:区域码 代表 模块

 

[展开全文]

http://blog.csdn.net/liujunjie612/article/details/70240338

[展开全文]