unity3d
User Interface System (UI)
Zoeken…
Abonneren op evenement in code
Standaard moet men zich abonneren op een evenement met behulp van Inspector, maar soms is het beter om het in code te doen. In dit voorbeeld abonneren we ons op een klikgebeurtenis van een knop om deze af te handelen.
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);
}
}
De UI-componenten bieden meestal hun belangrijkste luisteraar gemakkelijk:
- Knop: onClick
- Vervolgkeuzelijst : onValueChanged
- InputField: onEndEdit , onValidateInput , onValueChanged
- Schuifbalk: onValueChanged
- ScrollRect: onValueChanged
- Schuifregelaar: onValueChanged
- Toggle: onValueChanged
Muisluisteraars toevoegen
Soms wilt u luisteraars toevoegen aan bepaalde gebeurtenissen die niet door de componenten worden geleverd, met name muisgebeurtenissen. Om dit te doen, moet je ze zelf toevoegen met behulp van een EventTrigger
component:
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." );
}
}
Verschillende eventID zijn mogelijk:
- PointerEnter
- PointerExit
- PointerDown
- PointerUp
- PointerClick
- Slepen
- Laten vallen
- Rol
- UpdateSelected
- kiezen
- deselecteren
- Actie
- InitializePotentialDrag
- BeginDrag
- EndDrag
- voorleggen
- annuleren
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow