API调试
var stackTrace = new System.Diagnostics.StackTrace(true);
通过new System.Diagnostics.StackTrace
可以获取当前线程的堆栈帧信息
using System.IO;
using UnityEditor;
using UnityEngine;
namespace GameContent
{
public class TestTrackScript
{
private static int mIndex = 0;
[MenuItem("GM/测试Track")]
private static void TestTrack()
{
DebugTrack();
}
private static void DebugTrack()
{
if (mIndex > 3)
{
var stackTrace = new System.Diagnostics.StackTrace(true);
for (int i = 0; i < stackTrace.FrameCount; i++)
{
var frame = stackTrace.GetFrame(i);
string fileName = frame.GetFileName();
int lineNumber = frame.GetFileLineNumber();
string formattedMessage = $"[{Path.GetFileName(fileName)}:{lineNumber}]\n i={i}; FrameCount={stackTrace.FrameCount}";
Debug.Log(formattedMessage);
}
}
if (mIndex++ <= 3)
{
DebugTrack();
}
}
}
}