gpt4 book ai didi

C++:设计基于组件的实体系统——高级问题

转载 作者:IT老高 更新时间:2023-10-28 23:14:55 25 4
gpt4 key购买 nike

在我用 C++ 编写的游戏引擎中,我已经摆脱了经典的分层实体系统并构建了一个基于组件的实体系统。它大致是这样工作的:

实体只是组件的容器。一些示例组件包括:Point、Sprite、Physics、Emitter。

每个实体最多可以包含每种类型的一个组件。某些组件依赖于另一个组件,例如 Physics 和 Sprite 依赖于 Point,因为它们需要由它传递的位置和角度。

所以组件系统一切正常,但现在我无法实现更专业的实体,例如:

  • 相机,需要额外的功能来处理移动和缩放
  • 需要支持才能接收用户输入并移动的玩家

现在,我可以通过继承轻松解决这个问题。只需从实体派生相机并添加其他缩放功能和成员。但这只是感觉不对。

我的问题:

  • 如何使用 C++ 中的组件系统解决专门实体的问题?

最佳答案

您似乎怀疑这里的 IS-A 关系。那么为什么不让它成为HAS-A关系呢?相机和玩家可以不是实体,而是具有实体(或对实体的引用)但存在于组件系统之外的对象。这样,您可以轻松地保持组件系统的一致性和正交性。

这也很符合这两个示例(相机/播放器)作为“胶水”对象的含义。玩家将实体系统粘合到输入系统并充当 Controller 。相机将实体系统粘合到渲染器上并充当一种观察者。

关于C++:设计基于组件的实体系统——高级问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5119344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com