首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为使用对象聚合的程序设计通信系统

为使用对象聚合的程序设计通信系统
EN

Stack Overflow用户
提问于 2013-06-13 03:26:03
回答 1查看 654关注 0票数 2

我正在制作一个基于组件的游戏引擎,我试图通过使用这个设计尽可能地将数据与逻辑分开:

代码语言:javascript
复制
                                      Engine
              /                          |                                \
     EntityManager            ComponentManager                         SystemManager
(vector of entities)      (map of (entities - vector of components)) (vector of systems)

实际上,所有这些管理人员都只是实体、组件和系统的持有者。

这些功能的简要描述如下:

Entity:表示游戏中每个对象的类(just和UUID)。

Component :一个抽象类,它(它的子类)将只为一个实体保存关于特定事物的数据,例如ex。PositionComponent将只有一个实体的x,y值,仅此而已。

系统:一个抽象的类,它(它的子类)将拥有作用于Enities的所有逻辑,例如。PositionSystem将在引擎传递的Process()方法中拥有一个要操作的实体,并使用一些预定义的逻辑更改其组件值。

我的问题是,我如何让对象像这样传递数据呢?例如,我如何将消息从系统(驻留在SystemManager中)发送到ComponentManager,这样我就可以获得系统正在处理的当前实体的特定组件(我在ComponentManagers中已经有了执行此操作的方法,因此我的问题是,如何设计正确的方法来执行此操作)?或者通常是被建模的程序

就像操作系统一样(从内部内核到外部世界的各个层次),如何实现每一层之间的通信?有没有什么好的设计模式可以用来达到这个目的?

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-06-22 19:10:18

进行松散耦合通信的一种常见方法是消息传递。基本上,每个组件都有一个收件箱,其他组件将消息发送到该收件箱。你也可以做一些事情,比如广播给群组等等。

您应该记住,高级别的抽象可能会影响性能,而在游戏中,您需要高性能。所以你应该小心你代码的热点部分,也就是那些会被频繁调用的部分,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17073652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档