2017-07-07 66 views
0

我一直在尋找這麼多來解決我的問題,但我什麼也沒找到。C#UnityEvents - 覆蓋

那麼,我的問題是什麼? 我有一個從UnityEvent擴展的類,它有2個虛擬方法,它在另一個應該調用這些方法的文件中有公共標識符。但是,當我把我的腳本放在檢查器中時,什麼都沒有發生(除了root虛擬方法)。

類:

using UnityEngine; 
using UnityEngine.Events; 
using System.Collections; 

namespace Namespace { 
    [System.Serializable] 
    public class SomeClass : UnityEvent { 
     public virtual void OnSomething(GameObject objectSender, GameObject objectAction) { 

     } 
     public virtual void OnSomethingElse(GameObject objectSender, GameObject objectAction) { 
     } 
    } 
} 

我overrided在一個文件中的方法和但可變的「劇本」如下圖所示,但他們沒有overrided。使用SomeClass的的 人和:

using UnityEngine; 
using UnityEngine.Events; 
using System.Collections; 

namespace Namespace { 
    public class ActionListener : MonoBehaviour { 
     public SomeClass script; 

     // When I lose last hope 
     // private void Start() { 
     // script.Invoke(); 
     //} 
     public void OnHover(GameObject sender, GameObject action) { 
      script.OnHoverListener(sender, action); 
     } 
     public void OnClick(GameObject sender, GameObject action) { 
      script.OnClickListener(sender, action); 
     } 
    } 
} 
+0

script.OnHoverListener(參數)是OnSomething(參數)。這同樣適用於OnClickListener –

回答

0

我一直在使用MonoBehaviour代替UnityEvent解決了這個問題。

而不是它看起來像這樣

using UnityEngine; 
using UnityEngine.Events; 
using System.Collections; 

namespace Namespace { 
    public class SomeClass : MonoBehaviour { 
     public virtual void OnSomething(GameObject objectSender, GameObject objectAction) { 

     } 
     public virtual void OnSomethingElse(GameObject objectSender, GameObject objectAction) { 
     } 
    } 
} 

而且在使用

using UnityEngine; 
using UnityEngine.Events; 
using System.Collections; 

namespace Namespace { 
    public class ActionListener : MonoBehaviour { 
     public SomeClass script; 

     public void OnHover(GameObject sender, GameObject action) { 
      script.OnSomething(sender, action); 
     } 
     public void OnClick(GameObject sender, GameObject action) { 
      script.OnSomethingElse(sender, action); 
     } 
    } 
}