unity3d
Пользовательский интерфейс (UI)
Поиск…
Подписка на событие в коде
По умолчанию следует подписываться на событие с помощью инспектора, но иногда лучше делать это в коде. В этом примере мы подписываемся на событие щелчка кнопки для его обработки.
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);
}
}
Компоненты пользовательского интерфейса обычно предоставляют своим основным слушателям легко:
- Кнопка: onClick
- Выпадающее меню : onValueChanged
- InputField: onEndEdit , onValidateInput , onValueChanged
- Полоса прокрутки: onValueChanged
- ScrollRect: onValueChanged
- Ползунок: onValueChanged
- Переключить: onValueChanged
Добавление прослушивателей мыши
Иногда вы хотите добавить слушателей к конкретным событиям, которые не предусмотрены компонентами, в частности событиями мыши. Для этого вам придется добавить их самостоятельно, используя компонент 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." );
}
}
Возможны различные eventID:
- PointerEnter
- PointerExit
- PointerDown
- PointerUp
- PointerClick
- Тащить, тянуть
- Капля
- манускрипт
- UpdateSelected
- Выбрать
- Отмените
- Переехать
- InitializePotentialDrag
- BeginDrag
- EndDrag
- Отправить
- отменить
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow