実機側からUnityEditor
上のMemoryProfiler
に対してSnapShotを実行タイミングを指定することが出来る便利ツールです。
- Unity2017.4.24f1
- Unity2018.3.12f1
- iOS
- Android
- Windows 10
MemoryProfiler本体が別途必要ですので、下記のURLから取得して下さい。
https://bitbucket.org/Unity-Technologies/memoryprofiler
またMemoryProfiler
に含まれるPackedMemorySnapshotUtility.cs
を一部改変する必要があります。
static void SaveToFile(string filePath, PackedMemorySnapshot snapshot)
の前にpublic
を付けpublic static void SaveToFile(string filePath, PackedMemorySnapshot snapshot)
として下さい。
- UnityMemoryProfilerSupportKunEditor.cs
UnityEditor側で使用するファイルです。
Editor
フォルダの下に置いて下さい。 - UnityMemoryProfilerSupportKunEditor.cs UnityPlayer(アプリ)側で使用するファイルです。singletonのGameObjectとしてSceneに配置して使用して下さい。
スナップショットを撮りたいタイミングで下記のメソッドを実行して下さい。
UnityMemoryProfilerSupportKunClient.instance.Send("スナップショットのファイル名");
シーン切り替え直前・直後に上記メソッドを実行し差分を比較することでメモリーリークの解決の糸口を見つけることが出来る可能性があります。
また、UnityEditor側でスナップショットの保存が終了した際に、UnityMemoryProfilerSupportKunClient.instance.isDone
がtrue
を返します。
Development Build
及び AutoConnect Profiler
の両方にチェックを入れた状態でビルドを行って下さい。
前提条件としてMemoryProfiler
が使用可能である必要があります。
UnityMemorySProfilerSupportKun
Windowの他にMemoryProfiler
及びProfiler
Windowを開き、Active Profiler
を計測対象のアプリケーションと接続して下さい。
Active Profiler
との接続に関する詳細は下記のURLをご確認下さい。
https://docs.unity3d.com/ja/current/Manual/ProfilerWindow.html
下記の2種類のサンプルを用意しています。
実機側のボタンを押すことでSnapShotを取るシンプルなサンプル。シーンsimple.unty
のみビルドの対象として下さい。
Scene切り替えのタイミングでSnapShotを取るサンプル。下記の3シーンをビルドに含めて下さい。
SceneMain.unity
SceneSub0001.unity
SceneSub0002.unity