https://codingmania.tistory.com/187
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를 추가한다.
위의 에디터에서 이벤트 트리거를 사용한 순서와 같이 스크립트 코드를 작성하면 된다.
- Entry 생성
- Entry의 이벤트 타입 설정
- Entry에 이벤트 함수 추가
- EventTrigger 함수에 Entry 추가
스크립트의 순서는 위와 같으며, Entry에 함수를 추가할 때에는 람다식을 사용하여 이벤트 함수를 추가 할 수 있다.
함수 내에서는 PointerEventData data 를 통하여 이벤트가 발생했을 때의 데이터들을 가져와 활용하면 된다.
'Unity' 카테고리의 다른 글
[Unity] renderer.material 과 renderer.sharedMaterial의 차이점 (0) | 2020.04.03 |
---|---|
[Unity] 벡터의 내적을 이용한 시야각 구현하기 (0) | 2020.04.01 |
[Unity] UGUI - UI Image (0) | 2020.03.17 |
[Unity] 게임개발을 위한 유니티 활용식 (0) | 2020.03.16 |
[Unity] C# - Serializable, NonSerialized (0) | 2020.02.24 |