在ECS(实体组件系统)中,组件管理器和系统之间有什么区别?

问题描述 投票:0回答:1

我正在尝试了解ECS。因此,一个组件只是纯数据,某些管理器将这些组件保存在一个容器中,并遍历所有组件以对这些数据进行操作,以“更新”它们。

这个经理是人们所说的“组件经理”还是“系统”?还是他们是同一回事?如果没有,那么组件管理器和系统做什么?

game-engine entity-component-system
1个回答
0
投票

ECS对不同的人意味着不同的事物。关于实现,有很多方法,但我个人遵循以下规则:

  • A Component只是纯数据,通常是一个结构或某个对象,但从来没有与之关联的逻辑。

  • An Entity是组件的集合。它由一个标识符(通常是整数)定义,该标识符可用于查找类似于索引的组件。

  • A System是所有游戏逻辑所在的位置。每个系统都有一个原型,即它所操作的一组特定的组件。系统具有更新功能,该功能在被调用时会针对具有该特定组件集合的所有实体访问其感兴趣的特定组件集合(其原型)。此更新功能是从外部触发的(通过什么?请参见下一段)。

现在,这是直接解决您的问题(或至少尝试解决)的功能。视频游戏是模拟,通常由所谓的更新循环(通常与监视器的刷新率同步)驱动。在ECS架构中,通常有专用的代码将您的系统按队列排列在一起,并且在更新循环的每个时间步上依次执行这些系统(即调用其更新功能)。专用代码的那部分不仅管理系统更新循环,还负责管理组件(存储为可以由实体id索引的列表/数组)和许多其他任务。在许多实现中,其称为“ Engine”。这就是我要成为“组件经理”的目的。但这可能意味着另一种ECS方法中的其他内容。只有我的两分钱。希望能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.