我正在構建一款iOS遊戲,我注意到遊戲在XCode調試器中正常運行時表現良好。但是,當我從樂器(產品 - >配置文件追蹤泄漏)中運行它時,遊戲會在儀器顯示左邊欄中的「分析過程」時凍結。之後,由於遊戲中被分析的某些部分凍結而其他部分繼續運行,遊戲將其所有狀態混淆。在分析儀器過程的同時,ios遊戲不同步 - 我該如何避免這種情況?
這是我可以/需要解決的問題,還是足以確保遊戲在發佈中運行?
如果需要修復,我需要做些什麼才能使它工作?
更新1:
所以我們找到了問題 - 同樣的問題repros即使我們在玩遊戲,按home鍵,然後點擊遊戲圖標並繼續播放。
問題是我們的大部分工作都是在update方法中完成的,它依賴於(ccTime)dt參數的值。 dt的值通常爲0.1秒,偶爾會在0.5秒以內)。當我們暫停時(通過點擊主頁按鈕,或者儀器暫停遊戲拍攝快照)並繼續播放時,dt的值爲幾個秒!這會讓我們所有的計算超出範圍。
我們試圖修復該問題的臨時(但醜陋的)解決方法:在更新方法的開始,我們補充一點:
if(dt > 1)
return;
而且它現在將按預期 - 不出去的同步。然而,這不是一個永久性的解決方案,因爲dt的值有時候合理地接近1秒,並且在資源緊縮的情況下,這可能導致口吃(或更糟糕)。
我們還考慮存儲DT的前值的另一(同樣醜陋的)解決方案,然後在更新方法檢查:
if(dt > 10 * prevDt)
{
return;
}
我們打過電話的applicationDidEnterBackground
unscheduleUpdate
在AppDelegate.m
,並呼籲scheduleUpdate
在applicationWillEnterForeground
方法,但該方法無效。
處理由於外部暫停導致不穩定的時間值更新的最佳方法是什麼?
感謝 阿南德
爲什麼當您檢測到遊戲被暫停時,您只是將遊戲置於暫停狀態?恢復之後,您只需重置計時器,三角洲不會高得離譜 – Toad