如果我可以将剖析器统计信息(http://docs.unity3d.com/Manual/ProfilerWindow.html)和/或Unity Rendering Statistics(显示实时统计信息的叠加窗口) - http://docs.unity3d.com/Manual/RenderingStatistics.html - 保存为像CSV或Excel甚至txt文件那样的文件,我需要知道我可以稍后研究它们并对它们进行一些统计分析。如何在文件(文本或CSV ...)中保存Unity统计信息或Unity Profiler统计信息(CPU,渲染,内存...中的统计信息)?
2
A
回答
2
是的,你可以。
保存探查数据:
// write FPS to "profilerLog.txt"
Profiler.logFile = Application.persistentDataPath + "/profilerLog.txt";
// write Profiler Data to "profilerLog.txt.data"
Profiler.enableBinaryLog = true;
Profiler.enabled = true;
然后你就可以显示在编辑这个数据:
Profiler.AddFramesFromFile(Application.dataPath + "/profilerLog.txt");
节能数据:
你可以使用任何你想要的序列化方法/喜欢。只需使用UnityEditor.UnityStats
的数据。请记住,它只能从编辑器中获得。
这个类看起来是这样的,自动完成应该有所帮助:
public sealed class UnityStats {
public static extern int drawCalls
public static extern int batchedDrawCalls
public static extern int batches
public static extern int triangles
public static extern int vertices
public static extern int shadowCasters
public static extern int renderTextureChanges
public static extern float frameTime
public static extern float renderTime
public static extern int renderTextureCount
public static extern int renderTextureBytes
public static extern int usedTextureMemorySize
public static extern int usedTextureCount
public static extern string screenRes
public static extern int screenBytes
public static extern int vboTotal
public static extern int vboTotalBytes
public static extern int vboUploads
public static extern int vboUploadBytes
public static extern int ibUploads
public static extern int ibUploadBytes
public static extern int visibleSkinnedMeshes
public static extern int visibleAnimations
public static extern string GetNetworkStats(int i);
}
2
带着一脸到对反编译的统一代码(你可以在网上找到)的ProfilerWindow类,你可以很容易地编写导出数据的脚本你需要。
脚本可能看起来像这样
using UnityEditor;
using UnityEditorInternal;
var firstFrameIndex = ProfilerDriver.firstFrameIndex;
var lastFrameIndex = ProfilerDriver.lastFrameIndex;
var profilerSortColumn = ProfilerColumn.TotalTime;
var viewType = ProfilerViewType.Hierarchy;
var profilerData = new ProfilerData();
for (int frameIndex = firstFrameIndex; frameIndex <= lastFrameIndex; ++frameIndex)
{
var property = new ProfilerProperty();
property.SetRoot(frameIndex, profilerSortColumn, viewType);
property.onlyShowGPUSamples = false;
bool enterChildren = true;
while (property.Next(enterChildren))
{
// get all the desired ProfilerColumn
var name = property.GetColumn(ProfilerColumn.FunctionName);
var totalTime = property.GetColumn(ProfilerColumn.TotalTime);
// store values somewhere
}
property.Cleanup();
}
如果你愿意,你可以使用this script,使您可以将数据导出为一个JSON文件,还提供了当你剖析一些有用的统计数据。
相关问题
- 1. 保存统计信息mysql
- 2. 计划中的文件统计信息
- 3. Firebase统计信息
- 4. Ehcache统计信息
- 5. Solr统计信息
- 6. Hadoop文件系统统计信息(FileSystem.Statistics)
- 7. 使用Java分析系统内存/ CPU统计信息
- 8. 生成mysql统计信息
- 9. 收集mysql统计信息
- 10. Java版本统计信息
- 11. 每组Solr统计信息
- 12. 信息系统设计
- 13. 用户的统计信息
- 14. numpy的统计信息
- 15. Google datastore统计信息
- 16. jQuery CDN缓存统计信息
- 17. 在Ruby中统计一段时间内的统计信息
- 18. scrapy email统计信息或错误
- 19. Chrome商店统计信息
- 20. 从libvirt获取CPU统计信息
- 21. Python:代码统计信息
- 22. 从php文件绘制统计信息
- 23. Nginx http_status_module统计信息
- 24. 在wp统计信息中删除头版访问者统计信息
- 25. Hazelcast DurableExecutorService统计信息?
- 26. Mesos从站统计信息
- 27. 事务日志(MSSQL服务器)的内存/ CPU统计信息
- 28. Memcache统计信息cachedump
- 29. 伪造Oracle统计信息?
- 30. Postgres统计信息 - pg_stat_get_db_xact_commit
也许这个文章可以帮助你:https://www.packtpub.com/mapt/book/game-development/9781785884580/1/ch01lvl1sec11/saving-and-loading-profiler-data – wil