万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    MonoBehaviorでInvokeをパラメータ付きでメソッド拡張

    docs.unity3d.com

    があるのでEditor拡張で

    (target as MonoBehaviour).Invoke("HogeMethod", 0f);

    とかやることがあると思う。 ちなみに第2引数は秒数なのでHogeMethodに渡したい引数ではない・・。

    using System;
    using System.Reflection
     public static void InvokeWithArgs(this MonoBehaviour target, string methodName, object[] args)
        {
            Type t = target.GetType();
            // BindingFlagsがないとnullが返ることがあるので、ものによってはここを随時変えないとダメかも?
            MethodInfo m = t.GetMethod("SetActiveAttackUI", BindingFlags.NonPublic | BindingFlags.Instance);
            m.Invoke(target, args);
        }

    これで行けるかも?

    object[] args = { bar, hoge };
    (target as MonoBehaviour).InvokeWithArgs("HogeMethod", args);

    ではなく、

    object[] args = { bar, hoge };
    (target as 実際のクラス名).InvokeWithArgs("HogeMethod", args);

    としないといけないかもしれない。