做插件做框架都免不了需要做错误信息提示或者指引,而这种功能最重要的问题在于如何获取函数名及类名等数据,这里记录一种从堆栈读取调用信息的方法。
函数
public void getFileName()
{
MethodBase method;
method = new StackTrace().GetFrame(0).GetMethod();
UnityEngine.Debug.LogFormat("获取自身信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);
method = new StackTrace().GetFrame(1).GetMethod();
UnityEngine.Debug.LogFormat("获取直接调用方信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);
}
示例
private void Awake()
{
print("----------------------------- Awake直接调用 -----------------------------");
getFileName();
print("----------------------------- 通过函数AA调用 -----------------------------");
AA();
}
public void getFileName()
{
MethodBase method;
method = new StackTrace().GetFrame(0).GetMethod();
UnityEngine.Debug.LogFormat("获取自身信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);
method = new StackTrace().GetFrame(1).GetMethod();
UnityEngine.Debug.LogFormat("获取直接调用方信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);
}
public void AA()
{
getFileName();
}