有没有办法从Unity3d获得快照?

时间:2015-07-23 04:10:36

标签: unity3d mono heapshot

我想调试在Unity中占用大部分单声道内存的部分,因为我在探查器中看到的只是一块表示“单声道”的东西,并且不知道它是什么。

我已经在Unity Profiler中完成了纹理观察,我没有遇到任何问题。 (我说我用过它,只看到单块高内存)问题是必须有某种内存泄漏而不是内存峰值,因为如果我玩游戏的时间足够长,我的Galaxy Grand Duo会崩溃,黑色纹理是记忆力太大了。如果我在分析器中看到它,它说ManagedHeap和Mono Domain在多次玩游戏后只有很大的内存。

1 个答案:

答案 0 :(得分:1)

有关您正在开发哪个平台,您正在使用哪些工具以及开始分析内存的原因的详细信息将会有所帮助。没有这些信息我只能建议以下......

1)Unity Memory Profiler

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

听起来你已经这样做了,因为你已经将它缩小到了探查器中的“Mono”项目。这很好,你现在知道它是你的一个消耗内存的脚本。

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

2)纹理

说到Unity和内存,我总是从纹理开始。似乎每次我使用动态加载或修改纹理时,我最终都会产生内存泄漏。看看你的脚本,特别是任何加载纹理,并尝试暂时禁用这个逻辑。它有助于记忆问题吗?

3)观察并优化

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