2017-07-07 20 views
0

Ich hatte so viel gesucht, mein Problem zu lösen, aber ich fand nichts.C# UnityEvents - außer Kraft setzen

Also, was ist mein Problem? Ich habe eine Klasse, die sich von UnityEvent erstreckt, und es hat 2 virtuelle Methoden und es hat öffentliche Kennung in einer anderen Datei, die diese Methoden aufrufen sollte. Aber wenn ich mein Skript in den Inspektor eingebe, passiert nichts (außer root virtual).

Die Klasse:

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

I overrided diese Methoden in einer Datei und aber in Variable "script" unten gezeigt, aber sie sind nicht overrided. Und mit der 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 (args) ist OnSomething (args). Dasselbe gilt für OnClickListener –

Antwort

0

ich dieses Problem mit MonoBehaviour statt UnityEvent gelöst haben.

Und nicht sieht es aus wie dieses

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

Und in Gebrauch

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); 
     } 
    } 
} 
Verwandte Themen