Olayları değiştirmenin çok basit bir yolu var:
DÜZENLE
OnClick
Yalnızca etkinlik için etkinlik eklemenin hızlı ve kolay yolu için diğer yanıtı görün . OnDrag
Aşağıdaki gibi diğer etkinlikler için .
Ayrıca, varsayılan olarak sağlanan etkinliklerden daha fazlasına ihtiyacınız varsa, bunun yerine EventTrigger
oyun nesnenize bir eklemenizi öneririm . Bu BaseEventData
, olayı döndüren nesneye erişmemizi sağlar ve bize olayı oluşturan nesne gibi şeyler söyler. Sonra şöyle bir şey yapabilirsiniz:
//Create an event delegate that will be used for creating methods that respond to events
public delegate void EventDelegate(UnityEngine.EventSystems.BaseEventData baseEvent);
Daha sonra olayları işlemek için bir yöntem oluşturabiliriz, imza temsilci ile eşleşmelidir. Bu nedenle, ilk ve tek parametresi olarak geri dönüp void
kabul etmesi gerekir 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.
}
Son olarak, etkinliği dinamik olarak eklemek için:
//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 veya daha yeni bir sürüm kullanıyorsanız, yukarıdaki son satır yerine bu satırı kullanın, temsilciler amortismana tabi tutulur :
eventTrigger.triggers.Add(entry);