我正在构建一个基于组件的游戏对象架构。在我的情况下,我有renderables和物理对象。渲染场景包含可渲染的内容。物理场景包含物理对象。我有一个具有可渲染和物理对象的游戏对象。这些中的每一个都具有绝对零耦合。他们甚至在不同的图书馆里。
游戏对象需要的一个更明显的数据是位置和旋转。可渲染和物理对象都需要读取此信息,并在某些情况下写入它。有哪些有效的方法来处理特定于游戏而不是组件的信息,但某些组件是否需要这些方法?
答案 0 :(得分:2)
对我来说,这似乎是一个有点奇怪的架构 - 你将被迫做很多工作来保持两个独立的场景图同步,你可能会发现不可能让它们完全被解除(你在描述的情况)问题就是一个例子,但会有更多......)
我鼓励你考虑单个游戏对象图。您仍然可以为每个对象提供物理策略和渲染策略,但我建议将它们视为游戏对象的“插件”而不是单独的对象图。这样,游戏对象可以具有物理和渲染组件访问的位置/旋转向量。
如果您不想重新构建单个游戏对象图,则另一种方法是将位置/旋转信息分离成单独的结构,例如,大量的向量。 Physics和Render对象都可以共享对此结构的访问。
这意味着:
总的来说,我不确定这会让你获得多少......但如果你有其他一些限制,例如第三方物理库的设计,它可能会有意义。