2016-08-23 2 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., и если я изменю Type.EmptyTypes к new Type[] { typeof (float) }, я получаю ArgumentException: method argument length mismatch.

Проблема в том, что я не знаю, что поставить там, так как я не знаю, что тип (с Unity События могут отправить BOOL, поплавок и т.д.)

Unity Docs дону» t охватывают это, так что, надеюсь, кто-то еще имел успех в прошлом.

ответ

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); 

Он просто не выставляет скопированный слушателя в инспекторе, так еще на охоту за прекрасное решение.

Смежные вопросы