由于ECS代替多态就是用不同的类型进行逻辑分发来解决,每次逻辑分发都要写一个组件,同类代码很多,不优雅。而这些组件大部分情况下很类似,只需要根据类型进行不同的处理,比如:
switch (type) { case type1: break; case type2: break; … }
因此,考虑在现有的eventsystem的事件发布中添加两个参数作为分发条件就可以处理绝大部分情况;核心代码如
这样每次需要逻辑分发的时候只要定义一个id 和 分发类型的字段即可。欢迎讨论一下有没有更好的方式
publish跟invoke可不要搞混了,publish不能用来分发
没理解这个逻辑的应用场景。
7gxz 像 ConsoleDispatcher,NumericWatcherComponent,UIEventComponent 等等,这些组件的代码不都是类似的嘛,都是根据一个字段类型调用不用的方法,都可以统一成一个组件。
Long 是的,可以