游戏开发 - 更新方法和状态模式

时间:2017-02-11 12:35:00

标签: c++ oop design-patterns game-engine

对于我的游戏,我使用状态模式来处理我的屏幕。屏幕需要更新和渲染每个帧。游戏循环在Game类中。

但我还需要Entity类中的更新和呈现方法。我应该在Screen and Entity类中使用接口(例如FrameProcess)吗?或者我可以这样离开(见图)?

OOP中最好的实践是什么?那有什么模式吗?

此问题的基本UML:

enter image description here

2 个答案:

答案 0 :(得分:2)

在这种情况下,它取决于“实体”的含义。如果一个实体涵盖了可渲染和可更新的所有内容,那么为两者创建一个虚函数就没问题了(如果你计划派生其他类型的实体,比如车辆或武器)。如果您有除Entity之外的其他可渲染和可更新类型,我认为界面将是更好的选择。

您最好还是可以在游戏设备上查看https://gamedev.stackexchange.com/以获取更多问答答案。

答案 1 :(得分:1)

我将为update()类中的render()Entity方法创建纯虚函数,并让从其继承的类定义自己的行为,这将使系统在多态的方式。然后在Game类或其他类型的处理程序类中调用update()draw()方法,这些方法基于使用State模式决定它的系统的当前状态。

顺便说一下,它在http://gameprogrammingpatterns.com/state.html以非常清晰的方式更详细地讲述了状态模式及其示例用法