0

我想调试在 Unity 中消耗大部分单声道内存的部分,因为我从分析器中看到的只是一个块,上面写着“单声道”类似的东西,不知道它是什么。

我已经在 Unity Profiler 中完成了纹理观察,我对此没有任何问题。(我说我用过它,只看到内存高的单块)问题是一定有某种内存泄漏而不是内存尖峰,因为如果我玩游戏的时间足够长,我的 Galaxy Grand Duo 会崩溃并出现黑色纹理,这是内存使用过多。如果我在分析器中看到它,它说 ManagedHeap 和 Mono Domain 只有在多次玩游戏后才具有大块内存。

4

1 回答 1

1

有关您正在为哪个平台开发、您已经在使用哪些工具以及您开始分析内存的原因的更多信息会很有帮助。如果没有这些信息,我只能建议以下...

1) Unity 内存分析器

我建议从 Unity3D 编辑器中包含的内存分析工具开始。您可以在此处找到有关这些工具的更多信息:http: //docs.unity3d.com/Manual/ProfilerMemory.html

听起来您已经在这样做了,因为您已将其范围缩小到分析器中的“单声道”项目。这很好,您现在知道这是您的脚本之一正在消耗内存。

确保您使用的是高级视图。Unity Profiler 的高级视图将为您提供有关哪些脚本正在使用您的内存的更多信息。

2) 纹理

当谈到 Unity 和内存时,我总是从纹理开始。似乎每次我对纹理进行动态加载或修改时都会造成内存泄漏。查看您的脚本,尤其是任何加载纹理的脚本,并尝试暂时禁用此逻辑。它对你的记忆问题有帮助吗?

3)观察和优化

如果您无法找到任何看起来可能导致问题的脚本,我会尝试观察您的游戏并找到您看到内存峰值的点。尝试确定此时正在运行的逻辑。禁用单个脚本并再次运行您的场景。这是否减少了内存使用量?重复此过程,直到找到导致您的峰值的一个或多个脚本。找到这些脚本后,您可以尝试重构它们,直到获得所需的结果。

于 2015-07-23T04:30:15.943 回答