【发布时间】:2013-07-05 05:46:42
【问题描述】:
Unity3D Profiler 给了我一些主要是关于垃圾收集的尖峰。在下面的屏幕截图中,三个红色尖峰代表我在游戏中的三个档位。这些停顿中的每一个都是 100 多毫秒,大部分时间都花在了TrackDependencies 上。
根据Unity instruction,我尝试将其添加到我的代码中:
if (Time.frameCount % 30 == 0)
{
System.GC.Collect();
}
这没有帮助。我仍然有尖峰,它们仍然需要 100 多毫秒。究竟发生了什么?我可以做些什么来优化我的游戏?
PS:
我在我的游戏中动态地创建和销毁很多GameObjects。会不会有问题?
我没有在循环或数组中将字符串连接作为返回值,正如 the post 中所警告的那样。
【问题讨论】:
-
您是否在代码中的某处破坏了对象?
-
如果可能,将对象池化以避免过度破坏可能是一个很好的解决方案。
-
@Heisenbug 是的,我在我的游戏中动态地创建和销毁许多对象。在我的销毁对象函数中,我还调用了
Resources.UnloadUnusedAssets();
标签: optimization memory-management garbage-collection unity3d