【Unity】反射:編輯器中通過類名獲取Type
阿新 • • 發佈:2021-01-27
做配置表工具的時候,用到通過類名獲取類的Type:
Type type = Type.GetType(_className)
發現一個問題,在Unity執行程式碼中建立一個類:通過GetType能正常獲取該類的Type,但是在編輯器程式碼中,Get出來的卻是null。
猜想在當前的Assembly中沒有該類。
Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
在兩個程式碼中獲取當前的程式集,發現是兩個不同的程式集:Assembly-CSharp、Assembly-CSharp-Editor,怪不得在Editor中獲取不到所選的型別,Assembly-CSharp-Editor中根本就沒有這個類。
在需要獲取的類的程式集裡面建立一個靜態函式,就能獲取到了。
public Type GetConfigType(string className) { return Type.GetType(className); } public Type GetConfigTypeByAssembley(string className) { Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); if (assembly == null) { return null; } Type _type = assembly.GetType(className); return _type; }
獲取當前所有程式集:
Assembly[] all = AppDomain.CurrentDomain.GetAssemblies();