2017-02-20 395 views
1

我正在編寫Unity iOS應用程序,它跟蹤用戶在後臺的位置。當應用程序在前臺工作時,需要50-60MB的內存,並且在後臺運行時,所有數據仍保留在內存中。在這種情況下,應用程序會在幾秒鐘內因內存問題而終止。 Resources.UnloadUnusedAssets();不會減少任何東西。Unity for iOS在後臺佔用大量內存

如何減少背景中的佔用內存?

回答

1

這就是所需的行爲。當應用程序進入BG時,iOS沒有開始釋放內存,這是應用程序的責任。

解決內存問題的最佳方法是在應用程序上進行性能分析並查看內存的位置。在大多數情況下,紋理佔用大量內存,因此您可以考慮減小其大小或使用壓縮。你可以做的另一件事是關閉紋理的mipmapping,但如果你使用2D UI的紋理,這隻會給出良好的視覺效果,因爲3D不是一個好主意。

Resources.UnloadUnusedAssets()只有在存在未使用資產的情況下才會有效,如果您對此沒有做任何修改,將會產生任何影響。

你可以嘗試的一點小技巧是創建一個空場景並在後臺進行時轉換到該場景。場景可以有一個2D紋理,顯示應用程序處於後臺模式。然後你可以打電話Resources.UnloadUnusedAssets(),當然當轉回到前景時轉換回主場景。

+0

謝謝你的迴應!我已經想過創建一個空的場景,這種方式看起來不錯。 –