unity3d
System interfejsu użytkownika (UI)
Szukaj…
Subskrybowanie wydarzenia w kodzie
Domyślnie należy subskrybować zdarzenie za pomocą inspektora, ale czasem lepiej jest to zrobić w kodzie. W tym przykładzie subskrybujemy zdarzenie kliknięcia przycisku, aby go obsłużyć.
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);
}
}
Komponenty interfejsu użytkownika zwykle zapewniają łatwo głównemu odbiornikowi:
- Przycisk: onClick
- Lista rozwijana: onValueChanged
- InputField: onEndEdit , onValidateInput , onValueChanged
- Pasek przewijania: onValueChanged
- ScrollRect: onValueChanged
- Suwak: onValueChanged
- Przełącz: onValueChanged
Dodawanie słuchaczy myszy
Czasami chcesz dodać detektory do określonych zdarzeń, które nie są natywnie dostarczane przez komponenty, w szczególności zdarzeń myszy. Aby to zrobić, musisz dodać je samodzielnie, korzystając ze składnika 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." );
}
}
Możliwe są różne identyfikatory zdarzeń:
- PointerEnter
- PointerExit
- PointerDown
- PointerUp
- PointerClick
- Opór
- Upuszczać
- Zwój
- UpdateSelected
- Wybierz
- Odznacz
- Ruszaj się
- InitializePotentialDrag
- BeginDrag
- EndDrag
- Zatwierdź
- Anuluj
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow