1. 概述

2. 在蓝图中使用

3. 在 C++ 中使用

4. Replicated消息相关接口(3.2)

对于事件系统,它是解耦类引用的一种良好方式。

问题1:那么什么时候我应该使用它?

我认为事件系统应该应用于各个模块之间的交互,而不是同一个模块之内。 对于此,我以我正在开发的其中几个系统的内容来举例。

交互系统。这是使用事件系统的一个很好例子,对于角色需要交互的对象,我大部分情况下不需要知道交互的是什么对象,我只需要告诉对方我现在正在跟它交互,它可能会做出与角色对话、给角色任务、或者告诉角色一个任务线索、或者一些物品等等,这些完全可以使用事件系统来进行通知。

属性系统。这是一个典型的不应该使用事件系统的例子。在属性系统之内,我们可能有属性组件、属性对象、扩展属性对象(比如可再生属性),我们不应该使用事件系统来对他们做任何的通知行为,因为它隶属于同一个子模块。

伤害系统。与属性系统同样的道理,在其内部,我们不应该使用事件系统,而应该是一个子模块。但是对于伤害系统与属性系统的交互,我们可以使用事件系统来处理,比如我命中了敌人,然后造成了伤害,这时我们可以发一个通知给属性系统,告诉他,我造成了伤害,需要执行血量扣除、或者格挡扣除体力值(或其他)等等诸如此类的。