Ada cara super sederhana untuk mengubah acara:
EDIT
Lihat jawaban saya yang lain untuk cara cepat dan mudah menambahkan acara hanya untuk OnClickacara tersebut. Untuk acara lain, seperti OnDraglihat di bawah.
Selain itu, jika Anda membutuhkan lebih dari sekadar acara yang disediakan secara default, saya sarankan sebagai gantinya melampirkan EventTriggerobjek game Anda. Ini memberi kami akses ke BaseEventDataobjek yang dikembalikan dari acara, memberi tahu kami hal-hal seperti objek yang membuat acara. Maka Anda dapat melakukan sesuatu seperti:
//Create an event delegate that will be used for creating methods that respond to events
public delegate void EventDelegate(UnityEngine.EventSystems.BaseEventData baseEvent);
Kemudian kita dapat membuat metode untuk menangani acara, tanda tangan harus cocok dengan delegasi kami. Jadi, perlu kembali voiddan menerima BaseEventDatasebagai parameter pertama dan satu-satunya:
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.
}
Akhirnya, untuk menambahkan acara secara dinamis:
//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);
Jika Anda menggunakan versi 5.3.3 atau lebih tinggi, gunakan baris ini sebagai ganti baris terakhir di atas, delegasi disusutkan :
eventTrigger.triggers.Add(entry);