是否需要销毁通过Resources.Load加载的Texture资源?
Resources.Load加载的Texture2D是否需要手动销毁?
- 通过
Resources.Load<Texture2D>()加载的纹理,不需要手动调用UnityEngine.Object.Destroy()。 - 这类资源属于Resources目录下的托管资源,Unity会自动维护它们的引用计数。当代码中不再有任何引用指向该纹理时,调用
Resources.UnloadUnusedAssets()就能让Unity自动释放它占用的内存。 - 注意:如果还有脚本变量或其他对象持有该纹理的引用,
Resources.UnloadUnusedAssets()不会触发销毁,必须等所有引用都清除后,这个方法才会处理它。 - 反观
Texture2D.Create()创建的动态纹理,属于非托管资源,Unity不会自动追踪其生命周期,必须手动调用Destroy()或DestroyImmediate()清理,否则会造成内存泄漏。
内容的提问来源于stack exchange,提问作者Nikolai
相关产品推荐
相关产品推荐

