Có một cách siêu đơn giản để thay đổi sự kiện:
BIÊN TẬP
Xem câu trả lời khác của tôi để biết cách nhanh chóng và dễ dàng để chỉ thêm một sự kiện cho OnClicksự kiện. Đối với các sự kiện khác, nhưOnDrag xem dưới đây.
Ngoài ra, nếu bạn cần nhiều hơn chỉ các sự kiện được cung cấp theo mặc định, thay vào đó tôi sẽ đề xuất đính kèm một EventTriggerđối tượng trò chơi của bạn. Điều này cho phép chúng tôi truy cập vào BaseEventDatađối tượng được trả về từ sự kiện, cho chúng tôi biết những thứ như đối tượng đã tạo ra sự kiện. Sau đó, bạn có thể làm một cái gì đó như:
//Create an event delegate that will be used for creating methods that respond to events
public delegate void EventDelegate(UnityEngine.EventSystems.BaseEventData baseEvent);
Sau đó, chúng tôi có thể tạo một phương thức để xử lý các sự kiện, chữ ký phải phù hợp với phương thức của đại biểu của chúng tôi. Vì vậy, nó cần trả về voidvà chấp nhận BaseEventDatalà tham số đầu tiên và duy nhất của nó:
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.
}
Cuối cùng, để tự động thêm sự kiện:
//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);
Nếu bạn đang sử dụng phiên bản 5.3.3 trở lên, hãy sử dụng dòng này thay vì dòng cuối cùng ở trên, các đại biểu bị khấu hao :
eventTrigger.triggers.Add(entry);