(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


メモリ不足を検知する Application.lowMemory【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 6000.1.11f1


はじめに

スマホアプリはメモリを使いすぎると重くなり、最悪クラッシュして強制終了することもあります。

ということで今回は、Unityでアプリを作ってる時にメモリ不足を検知する方法の紹介です!


なお、スマホ(iOS,Android)用のため、PC(Mac,Windows)では機能しないようなのであしからず。

(ユニバーサルWindowsプラットフォームには対応している)


Application.lowMemory

メモリ不足を検知したい時は、Application.lowMemoryが使えます。



使い方は簡単、Application.lowMemoryに処理を設定するだけ。

private void Start(){
  //メモリ不足検知設定
  Application.lowMemory += OnLowMemory;
}

//メモリ不足時の処理
private void OnLowMemory(){
  Debug.Log($"メモリ不足のため、不要なアセットをアンロードします。");
  Resources.UnloadUnusedAssets();
  GC.Collect();
}


なお、デバイスシュミレーターを使うことで、Unityエディタ上でもメモリ不足の挙動を確認出来ますが、


その時に発生する処理はApplication.lowMemoryではなく、

Device.Application.lowMemoryなので、こちらを使うようにしましょう。

private void Start(){
  //メモリ不足検知設定
  Device.Application.lowMemory += OnLowMemory;
}

//メモリ不足時の処理
private void OnLowMemory(){
  Debug.Log($"メモリ不足のため、不要なアセットをアンロードします。");
  Resources.UnloadUnusedAssets();
  GC.Collect();
}


なお、Device.Applicationは、Device Simulatorを使ってない時は実際の端末の情報が取得出来ますし、

実機(リリースビルド)でもそのまま使えるので、基本的にはこれだけ使えばOKです。