在我用C++编写的游戏引擎中,我已经摒弃了传统的层级式实体系统,改用基于组件的系统。它的大致工作方式如下:
实体仅是组件的容器。一些示例组件包括:点(Point)、精灵(Sprite)、物理(Physics)、发射器(Emitter)。
每个实体最多可以持有每种类型的一个组件。某些组件依赖于另一个组件,例如物理和精灵依赖于点,因为它们需要由其提供位置和角度。
因此,使用组件系统一切都运作良好,但现在我遇到了实现更专业化实体的困难,例如:
- 相机(Camera),需要额外的功能来处理移动和缩放
- 玩家(Player),需要支持用户输入并进行移动
现在,我可以轻松地使用继承来解决这个问题。只需从实体派生相机,并添加额外的缩放函数和成员即可。但这种方法感觉不太对。
我的问题:
- 如何使用C++中的组件系统解决专业化实体的问题?