LoginSignup
27
23

More than 5 years have passed since last update.

UnityでTextureを明示的に破棄

Last updated at Posted at 2015-10-15

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

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

Resources.UnloadAsset(texture);

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

MonoBehaviour.Destroy(texture);

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

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

27
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
23