Suche…


Ereignis im Code abonnieren

Standardmäßig sollte man event mithilfe von inspector abonnieren. Manchmal ist es jedoch besser, dies im Code zu tun. In diesem Beispiel abonnieren wir ein Klickereignis einer Schaltfläche, um damit umzugehen.

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Button))]
public class AutomaticClickHandler : MonoBehaviour
{
    private void Awake()
    {
        var button = this.GetComponent<Button>();
        button.onClick.AddListener(HandleClick);
    }

    private void HandleClick()
    {
        Debug.Log("AutomaticClickHandler.HandleClick()", this);
    }
}

Die UI-Komponenten stellen ihren Hauptlistener normalerweise einfach bereit:

Hinzufügen von Maus-Listenern

Manchmal möchten Sie Listener für bestimmte Ereignisse hinzufügen, die nicht von den Komponenten bereitgestellt werden, insbesondere Mausereignisse. Dazu müssen Sie sie mithilfe einer EventTrigger Komponente selbst EventTrigger :

using UnityEngine;
using UnityEngine.EventSystems;

[RequireComponent(typeof( EventTrigger ))]
public class CustomListenersExample : MonoBehaviour
{
    void Start( )
    {
        EventTrigger eventTrigger = GetComponent<EventTrigger>( );
        EventTrigger.Entry entry = new EventTrigger.Entry( );
        entry.eventID = EventTriggerType.PointerDown;
        entry.callback.AddListener( ( data ) => { OnPointerDownDelegate( (PointerEventData)data ); } );
        eventTrigger.triggers.Add( entry );
    }

    public void OnPointerDownDelegate( PointerEventData data )
    {
        Debug.Log( "OnPointerDownDelegate called." );
    }
}

Verschiedene EventID sind möglich:

  • PointerEnter
  • PointerExit
  • PointerDown
  • PointerUp
  • PointerClick
  • Ziehen
  • Fallen
  • Scrollen
  • UpdateSelected
  • Wählen
  • Abwählen
  • Bewegung
  • InitializePotentialDrag
  • BeginnenDrag
  • EndDrag
  • einreichen
  • Stornieren


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow