2017-07-07 4 views
0

私は自分の問題を解決するために多くの検索をしていましたが、何も見つかりませんでした。C#UnityEvents - オーバーライド

私の問題は何ですか? 私はUnityEventから拡張されたクラスを持っていて、それは2つの仮想メソッドを持っていて、それらのメソッドを呼び出すべき別のファイルの公開識別子を持っています。しかし、スクリプトをインスペクタに置くと、何も起こりません(ルート仮想メソッドを除く)。

クラス:

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) { 
     } 
    } 
} 

私は「スクリプト」は、以下に示すが、それらがオーバーライドされていないファイルでこれらのメソッドをオーバーライドしてますが、変数インチ そして工assの使用:

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

のように見えます(引数)をOnSomethingています。同じことがOnClickListenerに適用されます –

答えて

0

私が代わりにUnityEventをMonoBehaviourを使用してこの問題を解決しました。

そしてません、それはscript.OnHoverListener(引数)この

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); 
     } 
    } 
} 
関連する問題