Unity 에서 EventTrigger 의 몇 가지 사용 동작
6600 단어 UnityEventTrigger
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 스 크 립 트 가 새 어 있 는 것 을 발 견 했 고,추가 후 테스트 를 누 르 면 정상 이 었 다.
보아하니 앞으로 더 손 을 써 야 할 것 같 으 니 필요 한 것 은 적어 두 어 라.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
photonnetwork.instantiate에서 gamepobject 유형을 생성 한 다음 상태 및 값을 참조하는 방법주로 마지막 기사에서 일어난 일의 수정입니다. 지난번↓ 그럼 주제입니다. (타이틀이 정리되어 없어서 죄송합니다) 우선 전회의 Illegal view ID:0입니다만 photonnetwork.instantiate를 사...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.