从远程下载一张贴图Texture,并赋值给Image _img,这也是新手常会忽略的会导致内存溢出的情况。彻底的unload内存的流程应该是这样的:
-
以下三选一都能使Image与Texture之间的引用断开,可根据业务需求选择
-
Destroy_img所在gameObject 即 Destroy(_img.gameObject)
-
Destroy_img组件即Destroy(_img)
-
将_img.sprite置空,即_img.sprite = null
-
将引用到Image的变量置空,即_img = null
-
当然如果对Texture缓存或者对由Texture转换所得的Sprite进行缓存了,还需对这些缓存引用置空,即 _tempSprite = null 或 _texDict.Clear() 或 _texDict = null
-
以上步骤任意顺序执行完后再调用Resources.UnloadunusedAsset()即可将Texture从内存彻底卸载
附上测试代码: