2016-08-23 13 views
0

UnityEventのイベントを別のイベントにコピーする必要があります。実行時にターゲットを別のオブジェクトに切り替える予定です。C# - 反射を使ってUnityEvent情報をコピーする

MethodInfo info = UnityEventBase.GetValidMethodInfo (event1.GetPersistentTarget (i), event1.GetPersistentMethodName (i), Type.EmptyTypes); 
UnityAction action = Delegate.CreateDelegate (typeof (UnityAction), info) as UnityAction; 

event2.AddListener (action); 

は私がArgumentNullException: Argument cannot be null.を取得し、私はnew Type[] { typeof (float) }Type.EmptyTypesを変更した場合、私はArgumentException: method argument length mismatchを取得します。

私は

ユニティドキュメントドン」(ユニティイベントがBOOL、フロートなどを送ることができるので)タイプが何であるかを知らないので、そこに入れているかわからないということで問題これをカバーしているので、他の誰かが過去に成功したことをうまくいけばいい。将来的には、この全体につまずく誰のために

答えて

0

が、これは働いていた:それは完璧なソリューションのための狩りにそうまだ、インスペクタにコピーされたリスナーを公開していません

MethodInfo info = UnityEventBase.GetValidMethodInfo (event1.GetPersistentTarget (i), event1.GetPersistentMethodName (i), new Type[] { typeof (float) }); 
      UnityAction execute =() => info.Invoke (event1.GetPersistentTarget (i), new object[] { 180f }); 
      event2.AddListener (execute); 

関連する問題