我正在设计一个基于组件的游戏对象架构。在我的情况下,我有渲染器和物理对象。渲染场景包含可渲染对象。物理场景包含物理对象。我有一个游戏对象,它有一个可渲染对象和一个物理对象。其中每一个都是绝对零耦合的。它们甚至位于不同的库中。
游戏对象需要的最明显的数据之一是位置和旋转。可渲染对象和物理对象都需要读取此信息,在某些情况下还需要对其进行写入。有什么有效的方法来处理特定于游戏,而不是组件,但某些组件需要的信息?
发布于 2011-12-05 09:21:16
这对我来说似乎有点奇怪--你将不得不做很多工作来保持两个独立的场景图的同步,而且你可能会发现不可能让它们完全分散(你在问题中描述的情况只是一个例子,但还会有更多……)
我鼓励您考虑单个游戏对象图。您仍然可以为每个对象使用物理策略和渲染策略,但我建议您更多地将它们视为游戏对象的“插件”,而不是单独的对象图。这样,游戏对象可以具有可由物理组件和渲染组件访问的位置/旋转向量。
另一种方法是,如果你不想重新架构到一个单一的游戏对象图,可以将位置/旋转信息分离到一个单独的结构中,例如一个大的矢量数组。物理对象和渲染对象都可以共享对此结构的访问。
这意味着:
必须注意并发性,例如,如果在渲染发生时添加新的物理对象会发生什么?
总体而言,我不确定这对你有多大好处......但是,如果你有一些其他的约束,比如第三方物理库的设计,这可能是有意义的。
https://stackoverflow.com/questions/8379924
复制相似问题