Sök…


Prenumerera på händelse i kod

Som standard bör man prenumerera på händelsen med inspektör, men ibland är det bättre att göra det i kod. I det här exemplet prenumererar vi på klickhändelse för en knapp för att hantera den.

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

UI-komponenterna ger vanligtvis sin huvudsakliga lyssnare enkelt:

Lägga till lyssnare på musen

Ibland vill du lägga till lyssnare på speciella händelser som inte nativt tillhandahålls av komponenterna, särskilt mushändelser. För att göra det måste du lägga till dem själv genom att använda en EventTrigger komponent:

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." );
    }
}

Olika eventID är möjliga:

  • PointerEnter
  • PointerExit
  • PointerDown
  • PointerUp
  • PointerClick
  • Drag
  • Släppa
  • Skrolla
  • UpdateSelected
  • Välj
  • Välja bort
  • Flytta
  • InitializePotentialDrag
  • BeginDrag
  • EndDrag
  • Skicka in
  • Annullera


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow