1. 程式人生 > 其它 >【Unity】反射:編輯器中通過類名獲取Type

【Unity】反射:編輯器中通過類名獲取Type

技術標籤:C#反射unityC#

做配置表工具的時候,用到通過類名獲取類的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();