-2

假设你有一些东西会在一段时间内保持变化,比如游戏的游戏状态。在这个游戏中,游戏循环不断运行,它的更新方法不断运行。

您可以通过使用带有表示游戏状态的变量的 switch 语句来完成游戏状态,并且根据它的值,它将执行菜单或游戏玩法或游戏的其他状态的代码。

每次游戏更新,都会先经过这个switch语句,这样看起来效率低下

对于暂时不会改变的东西,是否有比 switch 语句更有效的替代方法?我可以看到这是通过方法的变量完成的,但我认为 c# 不支持方法变量。

4

2 回答 2

0

将 switch 更改为某种东西的标准方法是使用 Dictionary of choice-to-handler。此处讨论了重构我的 C# 代码 - Switch 语句

var choices = new Dictionary<ChoiceType, Func<ChoiceResult> > (); 
...

public ChoiceResult HereWasSwitch(ChoiceType myChoice)
{
  return choices[myChoice]();
}

另一种方法是使用多态性并将每个选择替换为处理它的类。查看http://hanuska.blogspot.com/2006/08/swich-statement-code-smell-and.html

于 2012-07-29T05:17:36.060 回答
0

根据用户所在的部分创建多个循环。

您可能永远不会用完整个 cpu 时间,因此请考虑编写某种微时间函数,该函数将每 1/60 秒检查一次输入。这同样适用于视频渲染,大多数显示器每 60 秒或 120 秒更新一次。您不需要使用 100% 的 cpu 或 gpu 来渲染游戏中的场景。

If your writing your game using windows api you dont really have to bother, as windows will automatically handle how often input, and updates are applied to your form data.

于 2012-07-29T05:21:25.267 回答