はじめに
- Sceneに設置されている、とあるオブジェクト(以下、Manager)がメモリをかなり食っている
環境
- Unity5.0.2p4
計測方法
- Xcodeでメモリで計測
- iPhone5
特定まで
- ManagerのInspectorで参照しているPrefabを外したところ30MB程減った
- 上記Prefab(以下、親Prefab)が1個当たり0.01~0.6秒、100~200kb程であり、550個程読み込んでいた
1個当たりの容量が大きい理由
- 子PrefabがInspectorでデータ量が大きいScriptableObjectを参照していた
- また、子Prefabが同じScriptableObjectを参照している場合でも都度メモリが確保されてしまう
図
親A → 子AA → 孫AAA(ScriptableObject)
親B → 子BB → 孫AAA(ScriptableObject)
孫AAAが100kbあったとした時、合計200kbメモリを確保してしまっている様子
改善確認
未対応状態
- 起動直後 125MB
- Gameシーン遷移までの時間 35秒程
- Gameシーン遷移安定後 340MB ~ 360MB
- 服屋描画安定後 360MB ~ 370MB
- 親Prefabの読み込み時間 0.01~0.6秒
対応状態
- 起動直後 125MB
- Gameシーン遷移までの時間 28秒程
- Gameシーン遷移安定後 320MB ~ 340MB
- 服屋描画安定後 350MB ~ 360MB
- 親Prefabの読み込み時間 0.0001秒以下