Unity教程之-Unity3d中消息事件的封装与运用

 

大家在开发Unity的时候,为了方便开发一般都会采用消息事件,消息事件主要是做啥的?我们如何去封装,如何去运用消息事件处理事情。接下来就给大家介绍一下:

消息事件顾名思义,是通过消息触发的事件。比如大家去完成某个任务,完成后才会触发另一个事件的发生,这种情况我们就会使用消息事件等等吧。

消息事件的使用主要是通过添加消息监听,然后分发消息处理事情。

那我们如何去封装我们的消息系统,在这里我把代码给大家分享一下:

首先我们定义一个消息枚举类型脚本CEventType.cs内容如下:


wKioL1SdZ4qjYkHHAAEe9umQOxw949.jpg

 

接下来封装消息事件的基类CBaseEvent.cs

wKiom1SdZ6-igZ64AAFj36Rm6d4634.jpg

wKioL1SdaF-x03YLAAJIsu-x3SY407.jpg

wKiom1SdZ7Cj2F64AABl5PrXImE307.jpg

以上是消息基类的定义。那接下来就是封装对外使用的消息接口了。

wKioL1SdaQ3QeVh7AAPCa7ZzM7E503.jpg

wKiom1SdaF-zFRSGAAGqJoQSgbs942.jpg

整个消息事件就完成了,接下来我们介绍如何使用消息事件,举例如下:

比如我们需要接收到数据后,开始加载资源。如果不使用事件系统,我们要每帧都要去监听,而如果我们使用消息事件,我们可以这样写:

可以在Start函数里监听:

void Start()

{

CEventDispatcher.GetInstance().AddEventListener(CEventType.GAME_DATA, LoadData);

}

AddEventListener函数里面第一个参数是其枚举类型,后面是需要调用的函数

这样写:

public void LoadData(CBaseEvent evt)

{

//处理加载数据的逻辑

}

 

写完监听函数后,事情还没完事,大家可能要问,如何触发这个监听函数,这就需要我们接下来继续操作。

可以在另一个函数里面,这个函数可以不在监听所在的类里,可以在其他类,比如我们在另一个类里写触发函数:

void BeginGame()

{

//处理逻辑

CEventDispatcher.GetInstance().DIspatchEvent(new CBaseEvent(CEvent.GAME_DATA, null));

}

 

以上就完成了消息事件的监听和分发。方便大家开发,欢迎大家来讨论学习。