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 OnClick
sự 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ề void
và chấp nhận BaseEventData
là 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);