Entity Component System
Entity: 代表游戏中的实体,是 Component 的容器。本身并无数据和逻辑。
Component: 实体所有的属性组件,一个或多个 Component 组成了游戏中的逻辑实体。只有数据,不涉及逻辑。
System: 对 Component 集中进行逻辑操作的部分。一个 System 可以操作一类或多类 Component。同一个 Component 在不同的 System 中,可以关联不同的逻辑。(system关心component而不是entity)
常用 Singleton 模式和把共用代码放进 Utility function 解决system之间可能发生的耦合问题
ECS 框架优点:
1)高复用性:组件之间容易组合
2)扩展性强:面向对象的思想是对象本身是什么,而面向数据的思想是对象有什么,增加新的功能就是添加新的组件,无需修改之前的逻辑
3)性能方面提供了更大的优化空间
4)降低了代码之间的耦合度
ECS 框架缺点:
1)面向数据的编程模式,势必造成大量的组件及系统组合的形式,对于代码重构会形成很大的困难
2)默写模块与系统的耦合过高,造成一些功能的重用要有整个ECS环境才能运行
3)全部是数据都是开放的,数据上设计不好会造成很大影响