onClick auditeur délégation sur le Bouton de l'INTERFACE utilisateur
Depuis 4.6 l'unité utilise un nouveau système d'UI, ce que je n'ai jamais utilisé. Jusqu'à aujourd'hui.
Ce que je suis en train de faire est de générer des boutons de façon dynamique, donc je dois aussi ajouter l'événement onClick d'une manière dynamique (ou au moins à l'aide de scripts).
J'ai essayé d'étendre le onClick l'Auditeur, mais il ne veut pas travailler:
btn.GetComponent<Button>().onClick.AddListener(() => { placeBuilding(obj.name); });
Il va donner à cette erreur, qui ne semble assez claire de ce qui est faux:
Assets/Scripts/Menu/btnBouwen.cs(72,45): error CS0119: Expression denotes a 'method group', where a 'variable', 'value' or 'type' was expected
Cependant, je n'ai aucune idée de comment faire pour utiliser un UnityAction
comme il semble que le type requis pour l'appel.
Se sent comme je suis absent quelque chose de vraiment facile. Espérons que quelqu'un peut m'aider.
Salutations,
Nkmol
- Euh, pourquoi voulez-vous ajouter Cliquez Auditeur à la nouvelle INTERFACE utilisateur? Je suis curieux de cause c'est déjà un onClick auditeur, cette réponse parfaitement à un Clic de la Souris et des Touches, Plusieurs Touches aswell. Contrairement à OnGui vous n'avez pas à ajouter Listner, ou SI la condition au début. Vous pouvez même faire une méthode publique pour tout script et ouvrir le ButtonObject OnClick composant, et faites glisser le gameobject avec la méthode publique sur elle, et sélectionnez la méthode dans la liste déroulante, donc il va tirer.
- Voulez-vous dire à un certain point, que vous souhaitez faire glisser un GameObject pour le onClick de la nouvelle INTERFACE utilisateur et d'accéder à l'scripts à partir de là? Je comprends que vous voulez faire dynamiquement et je suis curieux car je n'ai jamais aussi bien fait.
- Imaginez que vous avez un
List<>
avec certaines valeurs qui peuvent avoir plusieurs valeurs une fois que l'application est en cours d'exécution. J'en boucle au travers de cette liste et pour chaque valeur, je veux générer unButton
. Tout ceci est générée par le code, et donc je ne peut pas utiliser l'interface utilisateur de l'unité et de glisser le GameObject à l'événement onClick. - Je comprends. Permettez-moi de l'essayer moi-même et voir si je peux en sortir. Je pourrais utiliser cette procédure dans l'avenir.
Vous devez vous connecter pour publier un commentaire.
Eh bien j'ai eu quelque chose de travail, qui pourrait s'adapte à vos besoins.
À cela nous avons ajouté, UnityEngine.EventSystems et ensuite ajouté à l'Interface IpointerClickHandler. Pour info, vous pouvez également ajouter de Glisser ou quelle que soit l'interface que vous désirez.
puis juste et l'interface de la méthode. Cliquez avec le bouton droit de la IPinterClickHandler alors choisir de mettre en Œuvre l'Interface de vérifier ce que l'autre méthode qu'elle a.
Vous devrez joindre à un gameObject. TOUT GameObject. Y compris les boutons.
Donc de façon dynamique dans la Liste de vos Boutons, soit vous souhaitez ajouter un composant. AddComponent(); j'appelle ma classe MainLab des fins de test.
Le problème que j'ai en face, c'est que mon
Button
était en conflit avec une classe personnalisée, j'ai fait appelleButton.cs
. Maintenant, j'ai appris à ne pas utiliser des noms de Classe qui existent déjà dans l'environnement^^il fixe avec le chemin direct pour la Classe:
code:
Ce code est dans une boucle
La façon de transmettre de l'Lambda en tant que délégué?
La ligne suivante devrait fonctionner correctement.
Le problème est dans
placeBuilding(obj.name);
, assurez-vous qu'il travaille à l'extérieur de la lambda. Consulter cette page.