Поиск…


Подписка на событие в коде

По умолчанию следует подписываться на событие с помощью инспектора, но иногда лучше делать это в коде. В этом примере мы подписываемся на событие щелчка кнопки для его обработки.

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

Компоненты пользовательского интерфейса обычно предоставляют своим основным слушателям легко:

Добавление прослушивателей мыши

Иногда вы хотите добавить слушателей к конкретным событиям, которые не предусмотрены компонентами, в частности событиями мыши. Для этого вам придется добавить их самостоятельно, используя компонент 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