我正在使用开关作为我的 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 方法是可以的,但我不想用额外的代码弄乱开关)