Application.lowMemory
Application.lowMemory
というメモリが少なくなったときに呼ばれるイベントが用意されているようです。
ドキュメントをみたところiOS,Andorid,UWPには対応しているみたいでした。
ただ以下のような文言があったので、アプリが最前列?(バックグラウンドでない状態)でないとイベントは呼ばれないっぽいのでそこは注意してください。
This only occurs when your app is running in the foreground.
またUWPで使う場合には注意書きがあったのでそちらもチェックしてみてください。
使い方
メモリが少なくなったらまず不要なアセットを削除するべきでしょう。
それを自動でしてくれるメソッドResources.UnloadUnusedAssets
も用意されているので、おまじないの意味合いも兼ねて書いておいて損はないと思います。
docs.unity3d.com
public class Test : MonoBehaviour { private void Awake() { Application.lowMemory += OnLowMemory; } private void OnDestroy() { Application.lowMemory -= OnLowMemory; } private void OnLowMemory() { Debug.Log("メモリが少なくなりました."); Resources.UnloadUnusedAssets(); } }
さいごに
メモリが不足してしまうのは色々な要因が考えられますが、もしかしたらメモリリークが起きている可能性もあります。
そういうのもを防ぐため参照が不必要に残っていないかはチェックしてみてください。(私も人のことを言えませんが・・・)
特に以下の記事のメモリリークの箇所はすごく良いことが書かれているので、もしみたことがないかたは一読してみるといいかもしれません。
madnesslabo.net
今回はこれくらいで。
ではまた。