iOSゲームを作成していますが、XCodeデバッガーで正常に実行しているときにゲームが正常に実行されることに気付きました。ただし、Instruments内から実行すると([Product]-> [Profile to trace Leaks])、Instrumentsが左側のサイドバーに[Analyzing Process]と表示すると、ゲームがフリーズします。その後、分析されていたゲームの一部がフリーズし、他の部分が進行し続けたため、ゲームはすべての状態を台無しにしました。
これは私が修正できる/修正する必要があるものですか、それともゲームがリリースで実行されることを確認するのに十分ですか?
修正が必要な場合、それを機能させるために何をする必要がありますか?
アップデート1:
そのため、問題が見つかりました。ゲームをプレイしている場合でも同じ問題が再現され、ホームボタンを押してゲームアイコンをクリックし、プレイを続行します。
問題は、ほとんどの作業がupdateメソッドで行われ、(ccTime)dtパラメーターの値に依存していることです。dtの値は通常<0.1秒、場合によっては最大0.5秒です)一時停止して(ホームボタンをクリックするか、楽器がゲームを一時停止してスナップショットを撮るとき)、再生を再開すると、dtの値は数になります。秒!そして、それは私たちのすべての計算を範囲外に投げます。
この問題を修正する一時的な(しかし醜い)回避策を試しました。updateメソッドの最初に、これを追加します。
if(dt > 1)
return;
そして今では期待通りに動作します-同期が外れることはありません。ただし、これは永続的な解決策ではありません。dtの値が合法的に1秒に近い場合があり、リソースが不足している状況では、これがスタッター(またはさらに悪い)につながる可能性があるためです。
また、dtの以前の値を格納する別の(同様に醜い)ソリューションを検討し、次にupdateメソッドをチェックインします。
if(dt > 10 * prevDt)
{
return;
}
を呼び出してメソッドを呼び出してみましたunscheduleUpdate
がAppDelegate.m
、そのアプローチは機能しませんでした。applicationDidEnterBackground
scheduleUpdate
applicationWillEnterForeground
外部の一時停止による不規則な時間値の更新に対処するための最良の方法は何ですか?
ありがとうアナンド