因为我们的 Components 只是数据层。可能很多数据比如我们压缩的数据,或者需要换算一次才能使用的数据。对于这种操作 我们将会对 Entity 引入 Actor的方式来处理。
这样我们的Actor就会存在很多的原子函数。可以提供给 System 操作, 同时还能保证底层的安全性。
逻辑帧消息
逻辑帧上我们将消息分为单帧下发,也就是一帧只有一个消息下发的方式,而其中组件消息的部分:
因为我们的 Proto 还是老版本 还不支持 Map 或 any 的操作 所以这里略显蛋疼。
不过办法总是有的 我们的消息同步这块也通过生成器来生成代码。就省去了每次都需要去添加人工写一次了。
如图:
总结
总结下ECS就是 ECS其实本身并不复杂,但是在使用它解决业务场景的时候 需要严谨的定义业务中的规则,剥离组件的方式。
如何去定义ECS在面向业务的时候的场景很重要。如果用好了,那就是利器。否则很可能导致数据层泪崩。
另外 ECS 这种架构 在 配合上 代码的自动化生成 真的能达到事倍功半的效果。所以在以后要多考虑让机器帮我们制造。而不是靠手撸~
以上大致为本次我们用ECS方式重构的一些核心要素了 草草结尾~ ^_。