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

前端之家收集整理的这篇文章主要介绍了C:设计基于组件的实体系统 – 高级问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的游戏引擎中,这是用C写的,我已经离开了古典的层次实体系统,并建立了一个基于组件的体系.它大致以这种方式工作:

实体只是组件的容器.一些示例组件是:Point,Sprite,Physics,Emitter.

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

所以一切都适用于组件系统,但现在我无法实现更专业的实体,如:

>相机,需要附加功能来处理移动和缩放
>一个播放器,需要支持用户接收输入并移动

现在,我可以很容易地用继承来解决这个问题.只需从实体派生相机,并添加附加的缩放功能和成员.但这只是感觉错了.

我的问题:

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

解决方法

你似乎怀疑这里的IS-A关系.那么为什么不使它成为HAS-A的关系呢?相机和播放器不是作为实体,而是可以是具有实体(或对实体的引用)但存在于组件系统之外的对象.这样,您可以轻松保持组件系统的均匀性和正交性.

这也很适合这两个例子(摄像机/播放器)作为“胶”对象的含义.播放器将实体系统粘贴到输入系统并充当控制器.相机将实体系统粘贴到渲染器,并作为一种观察者.

猜你在找的C&C++相关文章