我正在使用Resources.Load()在Unity中运行精灵,并且正如预期的那样,内存会增加。 但问题是,我似乎无法弄清楚如何释放记忆。
我知道我需要使用Resources.UnloadUnusedAssets(),但即使我删除了我能想到的精灵的每个引用,内存也不会再回落。
现在我的代码:
加载精灵(工作正常):
map = Resources.Load <Sprite> ("Map7");
spRend = this.GetComponent<SpriteRenderer>();
spRend.sprite = map;
卸载精灵(内存未被释放):
spRend.sprite = null;
map = null;
Resources.UnloadUnusedAssets();
更新:
经过进一步的研究,我在Unity wiki上找到了这个:
当不再使用时,您可以通过在对象上调用Object.Destroy释放它占用的内存,然后是Resources.UnloadUnusedAssets
但问题是当我试图破坏地图时,我收到以下错误:
Destroying assets is not permitted to avoid data loss.
If you really want to remove an asset use DestroyImmediate (theObject, true);