渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

【Unity警告】Cleaning up leaked objects in scene since no game objectを直す5つの方法

【Unity警告】Cleaning up leaked objects in scene since no game objectを直す5つの方法

こんにちは、Unityエンジニアのオオバです。

Unityで開発しているときどき表示される以下の警告文。
シーンを保存するときに出力されます。

Cleaning up leaked objects in scene since no game object, component or manager is referencing them Texture2D has been leaked 16 times.

👆上の警告文の場合、 画像が16回リークしている という意味です。

リークとは、本来削除しないといけないのに削除できなかった状態のことをいいます。つまりゴミが残っているのです。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

直し方① HideFlagsのつけ忘れを確認

ExecuteInEditModeを使用していて、エディット中にオブジェクトを生成している箇所にHideFlagsがセットしてあるか確認します。

_texture = new Texture(256, 128);  
// hideFlagsを設定する  
_texture.hideFlags = HideFlags.DontSave;  

👆上のような感じ修正します。

Cleaning up leaked objects in scene since no game object

この警告文が表示されるときは、おそらく ExecuteInEditMode を使っている可能性が高いです。

ExecuteInEditMode とは、Unityエディタ停止中でも再生状態とすることができる機能。専用のエディタ機能を作るときに使います。ただし使い方も要注意。

HideFlags を適切に設定しないと先の警告文がバンバン表示されます。

直し方② 全てのExecuteInEditModeを外してみる

ExecuteInEditMode 全文検索で探して全てコメントアウトします。

Cleaning up leaked objects in scene since no game object

この警告文は ExecuteInEditMode を使用しているときに起きます。
「直し方① HideFlagsのつけ忘れを確認」で解説したとおり、HideFlagsの設定で直る可能性は高いのですが、直らない場合もあります。

そこで ExecuteInEditMode をすべて外してしまおうという直し方です。もちろんUnityエディタの再起動もしてください。

ただし、この方法でも直らない場合はあります。

直し方③ 新しいシーンを作成してヒエラルキーを空にする

【Unity警告】Cleaning up leaked objects in scene since no game objectを直す5つの方法_0

新しくシーンを作り直す荒療治です。シーンには何もないですし、これで直りそうな気はします。
しかし、これでも直らないときは次の直し方に進みましょう。

👉 今さら聞けないUnityのヒエラルキー(Hierarchy)とは?

直し方④ アセットを再インポートする

Assets > Reimport All をクリックすると全アセットを再びインポートしてくれます。

【Unity警告】Cleaning up leaked objects in scene since no game objectを直す5つの方法_1

これで直る場合もありますし、ダメな場合もあります。そして、プロジェクトが大きくなると 非常に時間がかかる ので注意してください。

直し方⑤ Unityプロジェクトをダウンロードし直して開き直す

最終手段の方法です。開発中はGitHubかどこかにバックアップを保存していると思います。そのデータを ダウンロードし直して開きます。

つまり 「直し方④ アセットを再インポートする」 とほぼ同じ対応です。この方法で直らなかったことはありません。

確実な方法ですが、時間がかかってしまう のです。

新たなUnityプロジェクトを開くときはコツがありますのでこちらの記事を参考にしてみてください。

まとめ

本記事では Cleaning up leaked objects in scene since no game object の直し方を解説してきました。
最後に記事の内容を簡単にまとめます。

Cleaning up leaked objectsの直し方

①HideFlagsを見直す

②すべてのExecuteInEditModeを消してみる

③シーンを作り直す

④アセットを再インポートする

⑤Unityプロジェクトを再ダウンロードする

こんな感じです。
個人的には「④アセットを再インポートする」ところまでたどり着いてしまったのであれば確実に直る「⑤Unityプロジェクトを再ダウンロードする」を試すほうがよいと考えています。

どちらも時間がかなりかかりますからね。確実に直す方を選択したほうがよいと思います。

繰り返しになりますが、Unityプロジェクトを新規で開き直すときは、2倍早くなる方法がありますので、こちらの記事をどうぞ。

Cleaning up leaked objects に悩まれている方の助けになれば幸いです。

「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!

最後まで読んでいただきありがとうございました!
すばらしいUnityライフをお過ごしください。

オススメ記事