有时我们需要在游戏开发中手动释放无用的资源。 但我不确定
之间哪个更好System.GC.Collect();
Resources.UnloadUnusedAssets();
和
Resources.UnloadUnusedAssets();
System.GC.Collect();
AFAIK,它们都是异步操作,可能没有区别。
所以我的问题是......
答案 0 :(得分:9)
这两种没有区别。
System.GC.Collect()
将告诉.Net收集器收集托管堆中由mono管理的对象,而Resources.UnloadUnusedAssets
处理放在本机堆中的资产(纹理,声音和其他媒体) 。这两种方法完全不同,所以首先执行哪一种方法没有区别。 (正如你所说,它们都是异步的,你只需设置一个标志就可以建议系统进行收集。)
事实上,除非你有充分的理由,否则自称GC收集并不常见。系统的GC将在适当的时间工作,大多数强制垃圾收集的呼吁都没有你想象的那么必要。
如果您想了解有关Unity内存的更多信息,可以参考this blog,它可以详细告诉您具体内容。
答案 1 :(得分:0)
内部unity guy said的UnloadUnusedAssets也调用System.GC.Collect();。因此,如果您调用UnloadUnusedAssets,则无需调用System.GC.Collect