加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:22:04 所属栏目:百科 来源:网络整理
导读:在我的游戏引擎中,这是用C写的,我已经离开了古典的层次实体系统,并建立了一个基于组件的体系.它大致以这种方式工作: 实体只是组件的容器.一些示例组件是:Point,Sprite,Physics,Emitter. 每个实体最多可以容纳每种类型的一个组件.某些组件依赖于另一个组件,
在我的游戏引擎中,这是用C写的,我已经离开了古典的层次实体系统,并建立了一个基于组件的体系.它大致以这种方式工作:

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

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

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

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

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

我的问题:

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读