Ada cara super sederhana untuk mengubah acara:
EDIT
Lihat jawaban saya yang lain untuk cara cepat dan mudah menambahkan acara hanya untuk OnClick
acara tersebut. Untuk acara lain, seperti OnDrag
lihat di bawah.
Selain itu, jika Anda membutuhkan lebih dari sekadar acara yang disediakan secara default, saya sarankan sebagai gantinya melampirkan EventTrigger
objek game Anda. Ini memberi kami akses ke BaseEventData
objek 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 void
dan menerima BaseEventData
sebagai 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);