消息通知模型
本章节讲述消息通知模型在TPS项目中的使用,这种模型常见于项目中,表现多为Observer模式;Key-Value触发器模式; 文章末我会列出自己写的基于事件触发的模型,支持多种类型消息传递。
INTENSE的消息系统设计
举个例子,在 ThrowingEvents.cs 脚本中,有预先暴露的Event接口,观察事件触发时便会通知其他注册的事件。
- 不使用单例,当前消息系统并不是,也就意味着每次需要初始化一个新的消息系统
- 保持隔离性,INTENSE的消息系统设计就是每个不同类型的消息系统都会相互隔离。使用不同类型进行区分
1 | //代码片段 |
当前消息在 Canvas3D.cs 脚本中被注册
1 | public class Canvas3D : MonoBehaviour |
当前消息(事件)在 ThrowCSMB.cs 脚本中被触发
1 |
|
当这三个脚本运作起来的效果就是 玩家投掷->UI改变,此处有一个东西需要注意一下 就是 注册的先后顺序。
Event调用的先后顺序 先入先出
If I set up multiple event handlers, like so:
1 | _webservice.RetrieveDataCompleted += ProcessData1; |
The answer will be specific to the RetrieveDataCompleted event.
If it has the default backing store of a multi-cast delegate, then yes “they run in the same thread and sequentially in the order that are registered”.
Event在同一个线程内先注册的事件先被调用 - Stack Overflow FAQ
CASE
核心部分举例 ,框架核心就是RegisterEvent,UnregisterEvent
两个方法的包装。所有的消息被维护到具体的几个dictionary中。
本文标题:消息通知模型
文章作者:Keyle
发布时间:2016-11-23
最后更新:2024-08-20
原始链接:https://vrast.cn/posts/a9143383/
版权声明:©Keyle's Blog. 本站采用署名-非商业性使用-相同方式共享 4.0 国际进行许可