none
關於以字串動態取得目前Class內的函數的問題 RRS feed

  • 問題

  • 在Unity裡的GUI有GUI.Window 與 GUI.ModalWindow
    它們都有一個傳入參數 WindowFunction func
    http://docs.unity3d.com/ScriptReference/GUI.Window.html
    http://docs.unity3d.com/ScriptReference/GUI.ModalWindow.html

    WindowFunction 被Unity定義為
    public delegate void WindowFunction(int id);

    然後
    如果我經由
    Type thisType = this.GetType();
    MethodInfo theMethod = thisType.GetMethod(strFuncName, new Type[] { typeof(int) });
    去取得這個 theMethod 的話
    該怎麼把這個轉成能用的傳入參數的資料類型  WindowFunction 呢?

    player


    • 已編輯 p1ayer 2014年11月5日 上午 09:18 x
    2014年11月5日 上午 07:04

解答

所有回覆

  • 您好,有關於WindowsFunction(int id)

    裡面的數字是會去對應GUI.Windows的第一個參數喔

    以下為參考範例:

    int id = 0;

    void OnGUI()
    {
       GUI.Windows(id , new Rect(0, 0, 100, 100), WindowMessage, "Window name");
    }

    void WindowMessage(int windowId)
    {
        Debug.Log(windowId));
    }

    可以試試,當您id為10時,在WindowMessage內所取得的windowId則為10
    2014年11月5日 上午 08:33
    • 已標示為解答 p1ayer 2014年11月5日 上午 09:27
    2014年11月5日 上午 09:00
  • 你誤會了啦
    我是要把GUI的設定都抽到XML檔去
    可是在實作XML到Unity的GUI的橋接轉換上
    發現我雖然可以從XML檔裡抓字串出來
    可是寫到
    Type thisType = this.GetType();
    MethodInfo theMethod = thisType.GetMethod(strFuncName, new Type[] { typeof(int) });
    之後,
    發現我不會把 MethodInfo 轉換成我要的 WindowFunction 這種資料類型啦
    這跟一般用字串抓 成員函數出來呼叫不太一樣
    如果要直接呼叫成員函數來用的話, 用MethodInfo 的 Invoke 就可以了
    但是我是要把它當成參數去傳耶

    Type 在 System 裡
    MethodInfo在 System.Reflection 裡

    player



    • 已編輯 p1ayer 2014年11月5日 上午 09:18 x2
    2014年11月5日 上午 09:03
  • 喔喔了解,那利用這個呢

    MessageTarget.SendMessage("function name", SendMessageOptions.DontRequireReceiver);


    2014年11月5日 上午 10:24