我正在尝试了解ECS。因此,一个组件只是纯数据,某些管理器将这些组件保存在一个容器中,并遍历所有组件以对这些数据采取行动,以“更新”它们。
这个经理是人们所说的“组件经理”还是“系统”?还是他们是同一回事?如果没有,那么组件管理器和系统会做什么?
答案 0 :(得分:0)
ECS对不同的人意味着不同的事情。关于实现的方法很多,但我个人遵循以下规则:
组件只是纯数据,通常是结构或某些对象,与以往没有任何逻辑关联。
实体是组件的集合。它由一个标识符(通常是整数)定义,该标识符可用于查找类似于索引的组件。
系统是所有游戏逻辑的所在。每个系统都有一个原型,即它所操作的一组特定的组件。系统具有更新功能,该功能在被调用时会访问具有该特定组件集合的所有实体所访问的特定组件集合(其原型)。此更新功能是从外部触发的(通过什么?请参见下一段)。
现在,这是直接解决您的问题(或至少尝试解决)的功能。电子游戏是模拟游戏,通常由所谓的更新循环(通常与监视器的刷新率同步)驱动。在ECS架构中,通常有专用的代码将您的系统按队列排列在一起,并且在更新循环的每个时间步上依次执行这些系统(即调用其更新功能)。专用代码的那部分不仅管理系统更新循环,还负责管理组件(存储为可以由实体id索引的列表/数组)和许多其他任务。在许多实现中,其称为“ 引擎”。这就是我要成为“组件经理”的目的。但这可能意味着另一种ECS方法中的其他内容。只有我的两分钱。希望能有所帮助。