Nomad游戏引擎:第6部分-世界
这篇文章是系列文章的一部分,我在其中记录我从头开始构建ECS游戏引擎的经验。 请查看 该项目 的 主页,以 获取更多帖子,信息和源代码。 我从读者那里收到了一些有关发动机各部分如何装配在一起的信息。 从理论上讲,我们已经介绍了这一点,但是当涉及到实际代码时,就缺少了一个部分-世界。 这个世界(主要是)是我们正在应用于ECS的一个细节(类似于我们在上一篇文章中添加的句柄)。 它实际上并没有太多功能,它主要在某些情况下提供通信,例如: 系统想要检索实体的一些组件 所有系统都需要通知某些事情(例如,添加或删除组件/实体) 需要在所有系统上运行一个方法(例如update() ) 提供这些功能的方法有几种,但是我选择使用的模型是“世界”。 世界在ECS的所有不同部分之间提供了互操作性-组件管理器,系统和实体管理器。 可能有多个世界,每个世界都有自己的组件管理器和系统,但是在较简单的情况下,可能只需要一个世界(我们将在以后的文章中介绍具有多个世界的场景)。 在进一步介绍之前,我想简要说明构建此引擎时的主要目标之一:我想尽可能多地抽象出ECS…