假设我想要一个if语句,该语句每次游戏只会触发一次。
一旦发生这种情况,让CPU重新检查该条件的有效性对我来说似乎是浪费时间。
有办法以某种方式不再进行此检查吗?
它不会完全导致任何显着的性能提升。
但是我很好奇。

我想要一个通用的解决方案,这就是为什么我让它含糊不清,因为我经常在这种情况下运行。

伪代码:

if(CoinCollected && !CoinCollectedBefore)
{
  //Do stuff
}

最佳答案

根据需要检查的条件,通常的解决方案是创建一个专用布尔,然后检查是否已设置。

private bool cachedResult;
protected bool CachedResult
{
    get { return cachedResult ?? (cachedResult = ComplicatedCalculation()); }
}


...

if(CachedResult)
{
...
}


此代码检查'cachedResult'是否为null。如果是这样,则运行ComplicatedCalculation()方法以获取结果。之后,将填充“ cachedResult”,并且if语句将不会重新运行计算。

关于c# - 如果仅在游戏中触发一次语句,则效率更高,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41286338/

10-12 01:57