使用例
using System.Collections.Generic; using UnityEngine; public class Example : MonoBehaviour { private readonly List<Texture2D> m_textures = new List<Texture2D>(); private void Awake() { Application.lowMemory += OnLowMemory; } private void Update() { // 毎フレームテクスチャを生成してリストに追加 m_textures.Add( new Texture2D( 1024, 1024 ) ); } private void OnLowMemory() { // すべてのテクスチャを解放 m_textures.Clear(); Resources.UnloadUnusedAssets(); } }
解説(公式のドキュメントの引用)
Application.lowMemory は、iOS や Android で
アプリがフォアグラウンドになっている時に、
端末のメモリが不足してくると呼び出されます
そのため、メモリ不足でアプリが強制終了することを防ぐために、
Application.lowMemory が呼び出された時に不要なアセットを解放できます
また、アプリが強制終了してデータが失われないように、
一時的なデータを永続的なストレージに保存することも可能です
Application.lowMemory は各プラットフォームにおいて
下記のコールバックに対応しています
- iOS::
[UIApplicationDelegate applicationDidReceiveMemoryWarning]
- Android:
onLowMemory()
、onTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL)