2
この質問はUnity3Dのユーティリティスクリプトですが、この問題はC#での問題です。メソッドのインスタンスを見つける
"GameObjectName.ComponentTypeName.CallbackDelegateName"のような文字列(onClickCallbackPath
)をスクリプトに提供しています。
検索ゲームオブジェクトとコンポーネントが問題ではありませんが、このコードを見て取る:あなたは私がAction
型のオブジェクトを見つける必要が見ることができるように
string[] ss = onClickCallbackPath.Split ("." [0]);
Transform onClickTarget = Tools.FindDeepChild (transform.root, ss [0]);
MonoBehaviour[] allComponentsOnTarget = onClickTarget.GetComponents<MonoBehaviour>();
foreach (MonoBehaviour mb in allComponentsOnTarget)
{
if (mb.GetType().Name == ss [1])
{
MethodInfo[] methods = mb.GetType().GetMethods (BindingFlags.Public);
foreach (MethodInfo mi in methods)
{
if (mi.Name == ss [2])
{
// And here is how I imagine it to work, and look for something similar...
// but of course there is no GetInstance method in MethodInfo
Action a = (Action) mi.GetInstance(mb);
break;
}
}
break;
}
}
を(私は確かにそれが持つメソッドで作っています正しい署名)、私が見つけたMonoBehaviourの中から。
私はすべてのMethodInfoプロパティを調べて、私が探しているようなものを持っているようにしました。ネットで解決策を見つけようとしましたが、成功しませんでした。私は解決策を見つけることに私の問題は、ちょうど問題の名前を付け間違っていると賭ける。
しかし、私はあなたの問題が何かを理解していただければ幸いです。
助けてください。あなたが探しているもの
パーフェクトです!ありがとう。 –