Unity 구현 물체 동적 추가 이벤트
using System.Events;
using System.EventSystems;
//_go is the gameobject which need add event
//_go , EventTrigger unity ,
//_type is the EventTriggerType(point , drag , clickdown......
//_type ,
//_action is the funtion
//_action funtion , UnityAction
void AddTriggerEvent (GameObject _go , EventTriggrtType _type , UnityAction<BaseEventData> _action)
{
//
EventTrigger trigger = _go.GetComponent<EventTrigger>();
//
if (trigger == null)
{
trigger = _go.AddComponent<EventTrigger>();
}
//2021 2 20
// , ,
//if (trigger.triggers.Count==0)
//{
// trigger.triggers = new List<EventTrigger.Entry>();
//}
//
EventTrigger.Entry entry = new EventTrigger.Entry();
// , ,
//UnityAction<BaseEventData> callBack = new UnityAction<BaseEventData>(_action);
//
//entry.callback.AddListener(callBack);
entry.callback.AddListener(_action);
//
entry.eventID = _type;
//
trigger.triggers.Add(entry);
}
2021 년 2 월 20 일 업데이트전에 쓴 블 로그 가 너무 간략 하고 주의사항 도 없 는 것 을 보고 다시 편집 하 겠 습 니 다.저 는 지금 다시 주석 을 달 아 스 크 립 트 를 일부 수정 한 다음 에 주의사항 을 말씀 드 리 겠 습 니 다.
1.이 이벤트 트리거 는 유 니 티 에 내 장 된 이벤트 트리거 시스템 을 사용 하기 때문에 사용 할 때 반드시 있어 야 합 니 다.
이 두 구성 요 소 는 장면 에서 UI 구성 요 소 를 새로 만 들 때 새로 만 든 것 입 니 다.
2.UI 라면 직접 추가 할 수 있 지만,UI 가 아니라면 두 가 지 를 확보
1)카메라 에 방사선 부품 확보
이 두 구성 요 소 는 각각 3D 물체 와 2D 물체 에 대응한다.
2)검 측 될 구성 요 소 는 collder 구성 요소 가 있어 야 합 니 다.
오직 이렇게 해야만 이벤트 trigger 의 정확 한 실현 을 보장 할 수 있다
추가:Unity 동적 으로 물체 에 EventTrigger 이벤트 추가
이 스 크 립 트 를 마 운 트 한 물체 에 EventTrigger 구성 요 소 를 자동 으로 추가 합 니 다.
[RequireComponent(typeof(EventTrigger))]
public class ModelComponent : MonoBehaviour
{
}
이벤트 트리거 를 동적 으로 추가 합 니 다:
private void AddEventTriggerFun(EventTriggerType eventTriggerType, UnityEngine.Events.UnityAction<BaseEventData> unityAction)
{
//
EventTrigger.Entry entry = new EventTrigger.Entry();
//
entry.eventID = eventTriggerType;
//
entry.callback = new EventTrigger.TriggerEvent();
//
UnityEngine.Events.UnityAction<BaseEventData> callBack = new UnityEngine.Events.UnityAction<BaseEventData>(unityAction);
//
entry.callback.AddListener(callBack);
eventTrigger.triggers.Add(entry);
}
호출 테스트:
private EventTrigger eventTrigger;
private void Start()
{
eventTrigger = GetComponent<EventTrigger>();
EventTest();
}
private void EventTest()
{
AddEventTriggerFun(EventTriggerType.PointerClick, (BaseEventData baseEventData) => { ClickEvent(); });
}
private void ClickEvent()
{
Debug.Log(" ...");
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.