Unity 에서 EventTrigger 의 몇 가지 사용 동작

6600 단어 UnityEventTrigger
EventTrigger 이벤트 트리거 의 사용 은 어디 에 도 없다 고 할 수 있 습 니 다.EventTrigger 는 많은 이벤트 인 터 페 이 스 를 물 려 받 았 습 니 다.이 인 터 페 이 스 는 우리 개발 에 매우 유용 합 니 다.
EventTrigger 를 알 아 내 는 것 은 앞으로 게임 을 개발 하 는 과정 에서 적은 노력 으로 큰 효 과 를 거 둘 수 있다.

namespace UnityEngine.EventSystems
{
    [AddComponentMenu ("Event/Event Trigger")]
    public class EventTrigger : MonoBehaviour, IEventSystemHandler, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IBeginDragHandler, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, IDropHandler, IScrollHandler, IUpdateSelectedHandler, ISelectHandler, IDeselectHandler, IMoveHandler, ISubmitHandler, ICancelHandler
    {
        //
        // Fields
        //
        [Obsolete ("Please use triggers instead (UnityUpgradable) -> triggers", true)]
        public List<EventTrigger.Entry> delegates;
        //
        // Properties
        //
        public List<EventTrigger.Entry> triggers {
            get;
            set;
        }
        //
        // Constructors
        //
        protected EventTrigger ();
        //
        // Methods
        //
        private void Execute (EventTriggerType id, BaseEventData eventData);
        public virtual void OnBeginDrag (PointerEventData eventData);
        public virtual void OnCancel (BaseEventData eventData);
        public virtual void OnDeselect (BaseEventData eventData);
        public virtual void OnDrag (PointerEventData eventData);
        public virtual void OnDrop (PointerEventData eventData);
        public virtual void OnEndDrag (PointerEventData eventData);
        public virtual void OnInitializePotentialDrag (PointerEventData eventData);
        public virtual void OnMove (AxisEventData eventData);
        public virtual void OnPointerClick (PointerEventData eventData);
        public virtual void OnPointerDown (PointerEventData eventData);
        public virtual void OnPointerEnter (PointerEventData eventData);
        public virtual void OnPointerExit (PointerEventData eventData);
        public virtual void OnPointerUp (PointerEventData eventData);
        public virtual void OnScroll (PointerEventData eventData);
        public virtual void OnSelect (BaseEventData eventData);
        public virtual void OnSubmit (BaseEventData eventData);
        public virtual void OnUpdateSelected (BaseEventData eventData);
        //
        // Nested Types
        //
        [Serializable]
        public class Entry
        {
            public EventTriggerType eventID;
            public EventTrigger.TriggerEvent callback;
            public Entry ();
        }
        [Serializable]
        public class TriggerEvent : UnityEvent<BaseEventData>
        {
            public TriggerEvent ();
        }
    }
}
이것 은 공식 API 의 클래스 입 니 다.
다음은 다른 방식 으로 EventTrigger 의 용법 을 살 펴 보 겠 습 니 다.
1.편집기 로 추가
Inspector 에 EventTrigger 의 coponnent 구성 요 소 를 추가 한 다음 Add New Event Type 단 추 를 누 르 면 기본 이 벤트 를 추가 합 니 다.주 기본 이 벤트 는 다음 과 같 습 니 다.

우리 가 이 벤트 를 선택 할 때 이 이벤트 에 연결 되 는 것 과 같 습 니 다.예 를 들 어 우리 가 Pointer Click 을 선택 할 때 이 구성 요 소 를 연결 한 물 체 는 Pointer Click 이벤트 의 메 시 지 를 받 아들 입 니 다.우리 가 물체 에서 마 우 스 를 눌 렀 을 때(물론 빈 물 체 는 마 우 스 를 통 해 클릭 할 수 없습니다.그러나 우리 가 방사선 충돌 방법 을 통 해 Pointer Enter,Pointer Exit 등 이벤트 의 트리거 를 실현 할 수 있 을 때)이 EventTrigger 를 연결 하 는 것 은 UI Panel 입 니 다.그러면 사용자 정의 클릭 이 벤트 를 받 아들 일 수 있 습 니 다.

여기 서 1 은 우리 가 선택 한 Pointer click 이벤트 입 니 다.2 곳 은 우리 가 원 하 는 트리거 함수 가 있 는 스 크 립 트 를 실행 할 gameobject 를 여기에 맡 긴 다음 에 야 이 gameobject 대상 의 스 크 립 트 를 선택 하여 실행 할 수 있 습 니 다.panel 을 클릭 하면 Myclick 함수 가 실 행 됩 니 다.편집기 의 방법 은 기본적으로 이렇다.
2.다음은 스 크 립 트 에서 아까 의 기능 을 어떻게 실현 하 는 지

using UnityEngine;
using System.Collections;
using System.Collections.Generic;using UnityEngine.Events;
using UnityEngine.EventSystems;
public class GameManager : MonoBehaviour {
        void Start()
        {
                UnityAction<BaseEventData> click = new UnityAction<BaseEventData> (MyClick);
                EventTrigger.Entry myclick = new EventTrigger.Entry ();
                myclick.eventID = EventTriggerType.PointerClick;
                myclick.callback.AddListener (click);
                EventTrigger trigger = gameObject.AddComponent<EventTrigger> ();
                trigger.triggers.Add (myclick);
        }
        public void MyClick(BaseEventData data)
        {
                Debug.Log ("  ");
        }}
이 스 크 립 트 를 Panel 에 추가 한 다음 실행 하고 Panel 을 클릭 하면'클릭'이 인쇄 됩 니 다.
보충:Unity 에서 EventTrigger 를 사용 하여 필드 의 물 체 를 클릭 합 니 다.
한 번 하면 잊 혀 지지 않 을 줄 알 았 던 것 을 서서히 잊 어 버 리 는 것 을 보 니 나이 가 들 수록 기억력 이 예전 만 못 해 지 는 것 같다.그럼 부지런히 손 을 써 서 필요 한 것들 을 적어 라.
오늘 은 유 니 티 의 EventTrigger 구성 요 소 를 사용 하여 3D 물 체 를 클릭 합 니 다.
Unity 버 전 사용:5.4
기억 속 의 방법 에 따라 먼저 이 벤트 를 추가 합 니 다:

 EventTrigger et = gameObject.GetComponent<EventTrigger>();
 if (et == null)
 {
     et = gameObject.AddComponent<EventTrigger>();
 }
 et.triggers = new List<EventTrigger.Entry>();
 EventTrigger.Entry enter = new EventTrigger.Entry();
 enter.eventID = EventTriggerType.PointerDown;
 enter.callback = new EventTrigger.TriggerEvent();
 UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnPointerDown);
 enter.callback.AddListener(callback);
 et.triggers.Add(enter);
그리고 우 리 는 OnPointer Down 방법 에 출력 을 추가 하여 테스트 하기 편리 합 니 다.

    void OnPointerDown(BaseEventData data)
    {
 Debug.LogError("OnPointerDown");
    }
판 넬 에 EventSystem 이 있 지만 테스트 를 통 해 클릭 이 잘못 되 었 습 니 다.테스트 는 UI 를 클릭 하 는 것 이 문제 가 없습니다.
이때 서 야 카메라 에 Physics Raycaster 스 크 립 트 가 새 어 있 는 것 을 발 견 했 고,추가 후 테스트 를 누 르 면 정상 이 었 다.
보아하니 앞으로 더 손 을 써 야 할 것 같 으 니 필요 한 것 은 적어 두 어 라.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기