unity3d
Sistema di interfaccia utente (UI)
Ricerca…
Iscrivendosi all'evento nel codice
Per impostazione predefinita, uno dovrebbe iscriversi all'evento utilizzando l'ispettore, ma a volte è meglio farlo in codice. In questo esempio ci iscriviamo all'evento click di un pulsante per gestirlo.
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);
}
}
I componenti dell'interfaccia utente di solito forniscono facilmente l'ascoltatore principale:
- Pulsante: onClick
- Dropdown : onValueChanged
- InputField: onEndEdit , onValidateInput , onValueChanged
- Barra di scorrimento: onValueChanged
- ScrollRect: onValueChanged
- Slider: onValueChanged
- Attiva: onValueChanged
Aggiungere i listener del mouse
A volte, si desidera aggiungere listener su eventi particolari non forniti in modo nativo dai componenti, in particolare eventi del mouse. Per fare ciò, dovrai aggiungerli da solo usando un componente 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." );
}
}
Sono possibili varie eventID:
- PointerEnter
- PointerExit
- PointerDown
- PointerUp
- PointerClick
- Trascinare
- Far cadere
- Scorrere
- UpdateSelected
- Selezionare
- Deseleziona
- Mossa
- InitializePotentialDrag
- beginDrag
- EndDrag
- Sottoscrivi
- Annulla
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow