让我们说你有一些东西会暂时改变,比如游戏的游戏状态。在这个游戏中,游戏循环不断运行,并且它的更新方法不断运行。
您可以通过使用带有表示游戏状态的变量的switch语句来完成游戏状态,并且根据它的值,它将执行菜单或游戏玩法的代码或游戏的其他状态。
每次游戏更新时,它都会首先通过此开关语句,这似乎效率低下
对于那些暂时不会改变的东西,是否有一个更有效的替代switch语句?我可以看到这是用方法的变量完成的,但是c#不支持我认为的方法变量。
答案 0 :(得分:0)
将切换变为某种东西的标准方法是使用词典选择 - 处理程序。这将在此处讨论Refactor my C# code - Switch statement
var choices = new Dictionary<ChoiceType, Func<ChoiceResult> > ();
...
public ChoiceResult HereWasSwitch(ChoiceType myChoice)
{
return choices[myChoice]();
}
另一种方法是使用ploymorphism并用处理它的类替换每个选择。查看http://hanuska.blogspot.com/2006/08/swich-statement-code-smell-and.html
答案 1 :(得分:0)
根据用户所在的位置创建多个循环。
有可能你永远不会用完整个cpu时间,所以看一下编写某种类型的microtime函数,它会每1/60秒检查一次输入。同样可以应用于视频渲染,大多数监视器每60秒或120秒更新一次。您不需要使用100%的cpu或gpu来渲染游戏中的场景。
如果你使用windows api编写游戏,你真的不必费心,因为windows会自动处理输入的频率,并且更新会应用到你的表单数据。