【发布时间】:2012-10-19 23:49:42
【问题描述】:
我正在使用一个开关作为我的 XNA 游戏的状态管理器。该开关是主要更新方法的一部分,因此它每帧都运行。有时我需要设置一个计时器值,并且每个方法调用只能设置一次。有多种方法可以根据情况设置计时器,因此它不能使用当前和以前的状态编号来检查是否可以覆盖以前的时间。
case "state 34": {
SetTime(theTime); // should run only once
// other things
if (TheTimeisRight(time)) // runs every call
{
SetTime(theTime); // should run only once
if (TheTimeisRight(time))
{ /* some methods */ }
}
break; }
我怎样才能做到这一点,或者有没有更好的方法来做到这一点而无需离开交换机? (改变 SetTime 方法是可以的,但我不想用额外的代码把开关弄乱)
【问题讨论】:
-
能否添加完整的 Switch 代码,并详细解释一下
-
@Anandkumar 有什么不清楚的开关?我在问题中给出了我的开关示例,每种情况都与您在那里看到的大致相同,只是检查,方法和参数不同。
-
是每个方法调用,每个帧吗? IE 每帧一次?
-
@Alan 开关每帧调用一次,而 SetTime 在代码中每次调用只应调用一次,因此如果连续有两个 SetTime 方法,则应分别调用一次。
-
好的,我想我明白了。你反对修改switch语句的签名吗?
标签: c#