Unity

[Unity] Event Trigger

성엽이 2020. 3. 17. 10:36

https://codingmania.tistory.com/187

 

[유니티] 유니티에서 버튼 클릭했을 때 쿨타임 설정하기

유니티에서 쿨타임(쿨다운?) 기능을 사용하려고 한다. RPG 게임에서 어떤 스킬을 사용했을 때, 사용 후 일정 시간동안 못 쓰게 되고 일정 시간이 지난 후 다시 사용할 수 있게 된다. [사용 방법] 하나 예제를 만들..

codingmania.tistory.com

 

 


 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class EventTriggerSample : MonoBehaviour {

    void Start () {
        EventTrigger eventTrigger = gameObject.AddComponent<EventTrigger>();

        EventTrigger.Entry entry_PointerDown = new EventTrigger.Entry();
        entry_PointerDown.eventID = EventTriggerType.PointerDown;
        entry_PointerDown.callback.AddListener((data) => { OnPointerDown((PointerEventData)data); });
        eventTrigger.triggers.Add(entry_PointerDown);

        EventTrigger.Entry entry_Drag = new EventTrigger.Entry();
        entry_Drag.eventID = EventTriggerType.Drag;
        entry_Drag.callback.AddListener((data) => { OnDrag((PointerEventData)data); });
        eventTrigger.triggers.Add(entry_Drag);

        EventTrigger.Entry entry_EndDrag = new EventTrigger.Entry();
        entry_EndDrag.eventID = EventTriggerType.EndDrag;
        entry_EndDrag.callback.AddListener((data) => { OnEndDrag((PointerEventData)data); });
        eventTrigger.triggers.Add(entry_EndDrag);
    }
	
    void OnPointerDown(PointerEventData data)
    {
        Debug.Log("Pointer Down");
    }

    void OnDrag(PointerEventData data)
    {
        Debug.Log("Drag");
    }

    void OnEndDrag(PointerEventData data)
    {
        Debug.Log("End Drag");
    }
}

 

 

using UnityEngine.EventSystems;

을 추가한 후에 EventTrigger Component를 추가한다.

 

위의 에디터에서 이벤트 트리거를 사용한 순서와 같이 스크립트 코드를 작성하면 된다.

 

  1. Entry 생성
  2. Entry의 이벤트 타입 설정
  3. Entry에 이벤트 함수 추가
  4. EventTrigger 함수에 Entry 추가

스크립트의 순서는 위와 같으며, Entry에 함수를 추가할 때에는 람다식을 사용하여 이벤트 함수를 추가 할 수 있다.

 

함수 내에서는 PointerEventData data 를 통하여 이벤트가 발생했을 때의 데이터들을 가져와 활용하면 된다.