ET8.1的动态事件扩展
1.使用泛型参数
2.没有使用委托,支持热重载
1.将DynamicEvent目录放入ET的Codes/Model/Share/Module目录下
2.定义事件处理类
[DynamicEvent]
public class Test_DynamicEvent: ADynamicEvent<TestEntity, DynamicEventType.Test>
{
protected override async ETTask Run(TestEntity self, DynamicEventType.Test arg)
{
//to do something
}
}
3.注册和反注册需要监听的实体
- 1注册实体
testEntity.AddComponent<DynamicEventComponent>();
- 2反注册实体
testEntity.RemoveComponent<DynamicEventComponent>();
4.通知事件
DynamicEventSystem.Instance.Publish<DynamicEventType.Test>(new DynamicEventType.Test());
或
await DynamicEventSystem.Instance.PublishAsync<DynamicEventType.Test>(new DynamicEventType.Test());