수색…


코드에서 이벤트 구독

기본적으로 관리자는 inspector를 사용하여 이벤트를 구독해야하지만 때로는 코드에서 수행하는 것이 좋습니다. 이 예제에서는 버튼의 클릭 이벤트를 처리하기 위해 버튼의 이벤트를 구독합니다.

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

UI 구성 요소는 대개 기본 수신기를 쉽게 제공합니다.

마우스 리스너 추가하기

때로는 구성 요소가 제공하지 않는 특정 이벤트, 특히 마우스 이벤트에 리스너를 추가하려고합니다. 그렇게하려면 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가 가능합니다 :

  • 포인터 입력
  • PointerExit
  • PointerDown
  • 포인터
  • PointerClick
  • 견인
  • 하락
  • 스크롤
  • UpdateSelected
  • 고르다
  • 선택 취소
  • 움직임
  • InitializePotentialDrag
  • BeginDrag
  • EndDrag
  • 제출
  • 취소


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow