読者です 読者をやめる 読者になる 読者になる

渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きく慣れるように。。。 ※所属団体とは一切関係がありません

UnityのコンソールにCleaning up leaked objects in scene since no game...が表示された時の最終手段


f:id:esakun:20150730215258g:plain

開発環境

  • Unity5.1.3f1

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

こちらはUnity上でシーンを保存しようとした時にコンソールに表示される注意文です。
「シーンを保存するタイミングで何かがリークしてるよ」とのこと。

上記の内容だとTexture2Dオブジェクトがリークしているという意味になります。

tiri-tomato.hatenadiary.jp

こちらの記事のようにExecuteInEditModeアトリビュートをつけた時に、注意しないと起こる現象です。 なぜ起こるのかは先の記事を参考にしてください。

1. 全てのExecuteInEditModeアトリビュートを外してみる

ExecuteInEditMode 全文検索で探して全てコメントアウトします。
理論上はこれで解決しそうですが、これでもダメな場合があります。

2. 新しいシーンを作成してヒエラルキーを空にする

f:id:esakun:20150824164714p:plain

これでもダメな時があります。

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

(注意 : プロジェクトが大規模になってくると非常に時間かかります)

f:id:esakun:20150824162455p:plain

これで直る場合もありますし、ダメな場合もあります。

最終手段. リポジトリからダウンロードし直してプロジェクトを開き直す

(注意 : お分かりの通りプロジェクトが大規模になってくると非常に時間かかります)
この手段を取って直らなかったことはありません。

なぜこれで直るのかと言われると説明できないのですが、なぜか直ります。
一度リークしてしまうと内部的にずっとそのフラグが保持されてしまうのでしょうか…。

せめて差分ファイルが出てくれるとありがたいのですが…。

Unityゲーム開発

Unityゲーム開発