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);
Le mot est que la
delegate{}
syntaxe trouvée dans ma réponse précédente est obsolète, il existe une autre façon de le faire en utilisant la notation lambda:Ou vous pouvez passer le bouton pour rendre les choses un peu plus dynamiques:
la source
OnClick
événement. Afin d'ajouter dynamiquement d'autres événements, vous devez suivre les instructions de mon autre réponse.Créez un nouveau script, sur le modèle de:
Ce script implémente dans l'interface IPointerClickHandler (parmi de nombreuses autres interfaces disponibles ). Le simple attachement de ce script à un élément d'interface utilisateur permettra à ce script d'intercepter les événements de clic (ou tout événement pour lequel vous implémentez l'interface).
L'étape suivante consiste à simplement ajouter dynamiquement ce script en tant que composant à l'élément d'interface utilisateur que vous souhaitez:
Cela ajoutera le script en tant que composant
myButton
et la prochaine fois que je cliquera sur le bouton, j'obtiendrai des informations sur le bouton sur lequel vous avez cliqué et sur l'endroit où le clic a eu lieu.Cela fournit le plus d'informations sur l'événement par rapport à mes autres réponses.
la source
La façon dont l'unité implémente l'interface utilisateur est comme tout autre composant d'unité. Vous ajoutez GameObject et y attachez des composants d'interface utilisateur. Une fois que vous avez l'objet de jeu, vous pouvez en obtenir les composants d'interface utilisateur et modifier les propriétés.
La référence API pour l'interface utilisateur se trouve sous l'espace de noms UnityEngine.UI, la référence API pour BUtton est http://docs.unity3d.com/ScriptReference/UI.Button.html
Voir l'article http://blog.trsquarelab.com/2015/03/new-ui-implementation-using-c-scripts.html pour plus d'informations sur l'accès à l'interface utilisateur à partir de scripts C #
la source