이벤트를 변경하는 매우 간단한 방법이 있습니다.
편집하다
OnClick
이벤트 전용 이벤트를 빠르고 쉽게 추가 할 수있는 다른 답변을 참조하십시오 . 다른 이벤트의 경우 OnDrag
아래를 참조하십시오.
또한 기본적으로 제공되는 이벤트 이상의 것을 필요로하는 경우 대신 EventTrigger
게임 오브젝트에 a 를 첨부하는 것이 좋습니다 . 이를 통해 BaseEventData
이벤트에서 반환 된 객체에 액세스 하여 이벤트를 생성 한 객체와 같은 정보를 얻을 수 있습니다. 그런 다음 다음과 같은 작업을 수행 할 수 있습니다.
//Create an event delegate that will be used for creating methods that respond to events
public delegate void EventDelegate(UnityEngine.EventSystems.BaseEventData baseEvent);
그런 다음 이벤트 처리 방법을 만들 수 있으며 서명은 대리인의 서명과 일치해야합니다. 따라서 첫 번째 유일한 매개 변수로 반환 void
하고 수락 해야합니다 BaseEventData
.
public void DropEventMethod(UnityEngine.EventSystems.BaseEventData baseEvent) {
Debug.Log(baseEvent.selectedObject.name + " triggered an event!");
//baseEvent.selectedObject is the GameObject that triggered the event,
// so we can access its components, destroy it, or do whatever.
}
마지막으로 이벤트를 동적으로 추가하려면 다음을 수행하십시오.
//Get the event trigger attached to the UI object
EventTrigger eventTrigger = buttonObject.GetComponent<EventTrigger>();
//Create a new entry. This entry will describe the kind of event we're looking for
// and how to respond to it
EventTrigger.Entry entry = new EventTrigger.Entry();
//This event will respond to a drop event
entry.eventID = EventTriggerType.Drop;
//Create a new trigger to hold our callback methods
entry.callback = new EventTrigger.TriggerEvent();
//Create a new UnityAction, it contains our DropEventMethod delegate to respond to events
UnityEngine.Events.UnityAction<BaseEventData> callback =
new UnityEngine.Events.UnityAction<BaseEventData>(DropEventMethod);
//Add our callback to the listeners
entry.callback.AddListener(callback);
//Add the EventTrigger entry to the event trigger component
eventTrigger.delegates.Add(entry);
버전 5.3.3 이상을 사용하는 경우 위의 마지막 줄 대신이 줄을 사용하면 델리게이트가 감가 상각됩니다 .
eventTrigger.triggers.Add(entry);