2016-12-22 5 views
2

私は、各ゲームで1回発射されるifステートメントが必要です。
これが起こったら、CPUが再びその状態の有効性をチェックするようにするのは、私にとっては労力の無駄のようです。 このチェックをもう一度やり直す方法はありますか? 重要なパフォーマンスの向上はまったくありません。 しかし、私はちょうど興味があります。より効率的なifステートメントゲームで一度だけ発動したとき

私はこのような状況でかなり頻繁に動作するため、あまりにも漠然としています。

擬似コード:

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

'Start'メソッドに入れますか? – Arc676

+0

ifは、最初のアイテムが収集されるとすぐにアクティブになります。 – RomeoTheWizard

+0

だから、残念ながらそれは更新されないので、残念ながら – RomeoTheWizard

答えて

0

通常のソリューションは、プライベートブール値を作成し、既に設定されている場合は、それをチェックすることです条件ならば、そのためにチェックする必要がある内容に応じて。

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

...

if(CachedResult) 
{ 
... 
} 

このコードは、 'cachedResult' はnullであるかどうかを確認します。そうであれば、それを実行して、結果を得るために、ComplicatedCalculation()メソッドを実行します。その後、 'cachedResult'が設定され、if文は計算を再実行しません。

+1

この質問はUnity(ゲームエンジン)とコインを収集すること(ゲームイベント)に関するものです。状態は、すべてのフレーム(すなわち、毎秒60回またはFPSが何であれ)によって変化する可能性がある。キャッシュはここでは適用されません。 – CodeCaster

+0

GameObjectを破壊してそれをフレームごとに再作成しない限り、Unityscriptの設定をキャッシュすると、そのGameObjectが生存している限り、計算結果が保持されます。もっと複雑なことをするなら、コード例が必要です。 – ChargerIIC

+0

私はOPではありません。私の指摘は、 'cachedResult = ComplicatedCalculation()'は一度しか呼び出されず、 'Update()'で変更できるということです。 – CodeCaster

関連する問題