Il existe un moyen super simple de modifier les événements:
ÉDITER
Voir mon autre réponse pour le moyen rapide et facile d'ajouter un événement pour l' OnClick
événement uniquement. Pour d'autres événements, comme OnDrag
ci-dessous.
De plus, si vous avez besoin de plus que les événements fournis par défaut, je vous suggère plutôt de joindre un EventTrigger
à votre objet de jeu. Cela nous donne accès à l' BaseEventData
objet renvoyé de l'événement, nous indiquant des choses comme l'objet qui a créé l'événement. Ensuite, vous pouvez faire quelque chose comme:
//Create an event delegate that will be used for creating methods that respond to events
public delegate void EventDelegate(UnityEngine.EventSystems.BaseEventData baseEvent);
Ensuite, nous pouvons créer une méthode pour gérer les événements, la signature doit correspondre à celle de notre délégué. Il doit donc retourner void
et accepter BaseEventData
comme premier et seul paramètre:
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.
}
Enfin, pour ajouter dynamiquement l'événement:
//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);
Si vous utilisez la version 5.3.3 ou supérieure, utilisez cette ligne à la place de la dernière ligne ci-dessus, les délégués sont dépréciés :
eventTrigger.triggers.Add(entry);