2017-02-20 7 views
1

私はバックグラウンドでユーザの場所を追跡するUnity iOSアプリケーションを作成しています。アプリがフォアグラウンドで動作しているときは、50〜60MBのメモリが必要で、バックグラウンドになると、すべてのデータはメモリに残ります。この状況では、アプリケーションは数秒でメモリの問題により終了します。 Resources.UnloadUnusedAssets();は何も縮小しません。iOSのためのUnityは、バックグラウンドで多くのメモリを消費します。

どのようにバックグラウンドで占有メモリを減らすことができますか?

答えて

1

これは望ましい動作です。アプリがBGに入ると、iOSはメモリを解放し始めません。それはアプリの責任です。

メモリの問題にアプローチする最も良い方法は、アプリでプロファイリングを行い、メモリがどこに行くかを確認することです。ほとんどの場合、テクスチャは大量のメモリを占有するため、サイズの縮小や圧縮の使用について考えることができます。もう1つのことは、テクスチャのミップマップをオフにすることですが、2D UI用のテクスチャを使用している場合には、これは優れた視覚効果が得られます。

Resources.UnloadUnusedAssets()は、未使用のアセットがある場合にのみ機能します。何もしないと、何の効果もない細い変更があります。

小さなハックを試してみると、空のシーンを作成して背景に移動するときにそのシーンに切り替えることができます。シーンには、アプリがバックグラウンドモードであることを示す2Dテクスチャが1つあります。その後、Resources.UnloadUnusedAssets()に電話して、前景に戻ったときに元のシーンに戻ることができます。

+0

ありがとうございました!私はすでに空のシーンを作成することを考えてきましたが、この方法はかなり良いように見えます。 –

関連する問題