Hi, I’m looking to simply export profiler information for a selected frame to a readable format. That could just be a simple text file which I could copy and paste from. I came some scripts for sampling the profiler from the Unity documentation, but is there a simple solution already built in that I am just missing?
I have looked on the Forums a few times and haven’t found what I was looking for, if this has already been answered can you point me to the relevant thread?
With a look into the ProfilerWindow class on the decompiled unity code (which you may find online) you can easily write a script that exports the data you need.
The script might look like this
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();
}
If you want, you can use this script that allows you to export the data as a JSON file and provides also some useful stats when you are profiling.