공부일지

임시 본문

UnityProjects/Inventory

임시

이하택 2023. 11. 28. 21:16

이것들의 목적 : 마우스가 어떤 팝업 UI 위에 존재하는 가를 확인하기 위하여

EventTrigger

  • 이벤트 시스템에서 이벤트를 수신하고 각 이벤트에 대해 등록된 함수를 호출
    • 이벤트 시스템 이벤트에 대해 호출할 함수를 지정하는 데 사용할 수 있습니다.
    • 여러 함수를 할당할 수 있으며
    • 게임 오브젝트에 Event Trigger 컴포넌트를 연결하면 해당 오브젝트가 모든 이벤트를 가로채며, 이 오브젝트에서는 더 이상 이벤트 버블링이 발생하지 않습니다.
      • 이벤트 버블링

EventSystem

  • Canvas 내에 있는 이미지들에 대한 Delegate 이벤트들을 받아들이는 역할
    • 이벤트 시스템이 있어야만 이벤트 트리거가 작동
    • 하는 일
      • 어떤 게임 오브젝트를 선택할지 관리
      • 어떤 입력 모듈을 사용할지 관리
      • 레이캐스팅 관리(필요 시)
      • 필요에 따라 모든 입력 모듈 업데이트
  • 스크립트 상에서 동적으로 이벤트 트리거 추가
    • 작성 순서

      Entry 생성

      Entry의 이벤트 타입 설정

      Entry에 이벤트 함수 추가

      EventTrigger 함수에 Entry 추가

    • 예제 스크립트
      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");
          }
      }

PointerEventData

EventSystems.PointerEventData - Unity 스크립팅 API
Event payload associated with pointer (mouse / touch) events.
https://docs.unity3d.com/kr/530/ScriptReference/EventSystems.PointerEventData.html


Uploaded by N2T

'UnityProjects > Inventory' 카테고리의 다른 글

코드 리뷰  (2) 2023.11.20
상세 아이템 Data 작성  (1) 2023.11.16
질문록  (1) 2023.11.15
중간 발표와 피드백  (1) 2023.11.14
백업  (0) 2023.11.09