質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

595閲覧

【Unity】Texture2DがManagedStaticReferences()になっている

megumin

総合スコア78

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/10/15 06:48

前提・実現したいこと

Unityでゲームを作っているのですが、どうもメモリがうまく開放できていないようでProfilerを確認してみると、Assets>Texture2Dで前のシーンの画像データ(?)が読み込まれたままになってしまっています。

試したこと

画像データを選択してみるとReferenced By:のところにManagedStaticReferences()とあるので調べてみると、staticな変数から参照されていることがあるとでてきました。

■試したこと①
Resources.UnloadUnusedAssets();をシーンロード後に設定してみたが、ダメだった。

■試したこと②
シングルトンも使用していたためそちらが怪しいと思い、
・OnDestroy時に自身のインスタンスにNullを設定(instance = null;)

■試したこと③
これでも消えないため、
・シングルトンクラスを継承しているクラスで宣言していた「public変数」と「[SerializeField] private変数」にもOnDestroy時にNullを設定
→変数に紐づいていたオブジェクトの画像関連は消えたっぽいが、一部のシーンではまったく消えていないためよくわからない

ググってもこれくらいの対処方法しかわからないため苦戦しています。
どなたかご教授を・・・

補足情報(FW/ツールのバージョンなど)

Unity 2019.2.6f1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2019/10/16 02:10

確実に「texture = null;」していますか? 例えばテクスチャをスプライトにしてImageで使っていた場合、 「image.sprite = null;」とするとスプライトは消えますがテクスチャは残ります。 同様にクラス変数にテクスチャを入れて、そのクラスのインスタンスを消した場合でもテクスチャは残ります。 これをした上でResources.UnloadUnusedAssetsが必要かなと思います。 (それでもダメならResources.UnloadAssetsを試してみてください)
megumin

2019/10/16 06:45

ご返信ありがとうございます。 確実に「texture = null;」しています。 そのようにしたテクスチャは期待通り削除されているようなのですが残り続けているのが、シーン上にはじめから存在していたテクスチャなのです。 シーンの開始からImageコンポーネントに設定されていて、特に非アクティブや後から生成したわけでもないテクスチャがどうも次のシーンに進んでもProfilerを確認してみると残ってしまっているようです。
sakura_hana

2019/10/17 04:50

なるほど、最初からシーン上にある場合は参照を握りっぱなしになっているのかもしれません。 ただシーンが変わればGameObjectは消えるはずなので、DontDestroyOnLoadしていない&staticでもないならば、本当は消えるはずですよね…… シーン変更直後だと怪しいのでちょっと時間を空けてアンロードするのを試すのと、 新規作成したプロジェクトでも発生するかの確認をしてみてください。 後者でも起こるならUnityのバグ扱いになるかもしれないのでバグレポート提出をしてみるといいかもしれません。
megumin

2019/10/21 01:22

もしかしたら自分のほうでのプログラムミスかもしれないですし、今回は特に必須で直すということでもないのでとりあえず放置します・・・Unityでのバージョンを変えてみたら直るかもしれませんのでまた同じ現象が発生したときには対処するかもしれません。 お手数をおかけしましたが、ありがとうございました。(´ ˙꒳˙ `)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問