2017-07-07 84 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); 
     } 
    } 
}