Help us understand the problem. What is going on with this article?

UnityでTextureを明示的に破棄

More than 1 year has passed since last update.

UnityのTextureクラスには破棄するためのメソッドが用意されていない。基本的には参照が消えたら勝手に破棄されるようなのだが、UnityのProfilerでよーく確認してたら参照が消えてもメモリが解放されない状態になっていた。調べていくとどうやらUnityのTextureは内部でUnity側がキャッシュしてるよう。キャッシュがどのタイミングでクリアされるか分からないが、大容量のデータを読み込む際には明示的に破棄して解放してやりたい。

Textureの破棄は、最初以下のようにしてた。

Resources.UnloadAsset(texture);

しかしこれもProfilerで確認してるとちゃんとクリアされてないよう。
いろいろ調べた結果、以下のようにすると上手くいった。

MonoBehaviour.Destroy(texture);

Unity内部でどのように処理されてるかは不明だが、Destroyの方がちゃんと破棄処理を行ってくれるよう。Destroyは参照先の情報も破棄するうんぬんの情報をどこかで見た気がするので、精度が高いのかな?

ただ上記はエディタ上でしか確認してないので、実機上ではどうなるか不明。自分が確認した限りAndroidは上記を行わなくても上手くメモリ解放されてた気がする。のちのちちゃんと調べた方がいいかもな。

tempura
フリーランスの天麩羅調理師 http://okamura0510.jp https://github.com/okamura0510 https://www.tempura.blog
http://okamura0510.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした