増え続けるObject(メモリリーク?)
Profilerのメモリを見ているとTotal Objects in SceneとTotal Object Countが増え続ける。
増え続けるのはおかしいこと。破棄されていない。
これをメモリリークというのかな?
ここでいうオブジェクトとはUnityEngine.Objectを継承したクラスのインスタンスになります。
このオブジェクト数が増え続けている場合、どこかで破棄をミスっている可能性があります。このようにMemoryプロファイラはメモリリークの検出に役立ちます。
ゲームの弾を生成し続けているとか、そういう分かりやすい生成はしていない。
あとプロファイラーを詳しく見たら、増えているのはTextureっぽかった。でもその大量にあるTextureの名前が表示されていない。
Texture
Textureは破棄されないんだって。
どのTextureを生成し続けているかはよくわからないけど、とにかく破棄する必要がある。
Resources.UnloadUnusedAssets()
Resources.UnloadUnusedAssets();を呼べば大体のアセットを破棄できる。
リファレンス
どういうタイミングで呼び出せばいいかよくわからないが、とりあえずUpdate文で5秒ごとに呼び出してみた。
void Update()
{
timeleft -= Time.deltaTime;
if (timeleft <= 0.0)
{
timeleft = 5.0f;
Resources.UnloadUnusedAssets();
}
}
すると、ちゃんと5秒後に増え続けるオブジェクト数がリセットされる。
これでいいんだろうか・・・
根本原因を探したほうが良さそう。
→new Texture2DをUpdateでしている場所見つけた!