Je cherchais quelque chose qui devrait être simple, mais la documentation d'Unity 5 à ce sujet est assez obsolète. Ce que je veux réaliser est de pouvoir créer du texte d'interface utilisateur totalement à partir du script, c'est-à-dire de manière entièrement dynamique - dans mon application de cas réel, je le ferai dans une boucle d'un nombre d'itérations non prédéfini.
Une recherche utilisant Google trouvera de nombreux exemples sur la façon de le faire, mais tout ce que j'ai vu soit utiliser des méthodes déjà obsolètes (antérieures à Unity version 5) ou tout simplement erronées (pas de surprise ici ...). Je sais déjà que je devrais d'abord ajouter un canevas à mon projet, puis je devrais inclure using UnityEngine.UI
dans mon code C #, et aussi que je pourrais déclarer un texte d'interface utilisateur comme Text _guitext
.
Cependant, le code ci-dessous ne fonctionne pas. Je veux dire, ce n'est pas que ça plante, mais plutôt que rien ne s'affiche:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MyClass: MonoBehaviour {
Text _guitext;
// Use this for initialization
void Start () {
_guitext.text = "testing";
}
// Update is called once per frame
void Update () {
}
}
Pire que cela, il semble que pendant le jeu, aucun nouvel objet n'apparaisse dans la liste de la hiérarchie des objets.
Pourriez-vous, s'il vous plaît, me montrer la bonne direction ici? Merci.
Text' does not contain a definition for
text 'and no extension methodtext' of type
Text' was found (vous manque une directive using ou une référence d'assembly?)using UnityEngine.UI
le début du script?1 voulez-vous dire que vous voulez changer dynamiquement l'uitext?
Si vous voulez le changer, vous devez d'abord attacher votre script à gameobject. Liez ensuite vos variables. Des tutoriels peuvent être trouvés ici
2 Si vous souhaitez créer uitext qui n'est pas dans la hiérarchie au préalable.
Vous pouvez utiliser l' interface graphique . Étiquette GUI
Mettez les instances créées dans OnGUI. C'est comme la mise à jour qui s'appelle chaque trame.
3 En fait, la deuxième réponse ne crée pas d'objet uitext.
Mais il obtiendra les mêmes résultats. Si vous voulez vraiment l'objet uitext au lieu des effets. Vous pouvez le faire dans un préfabriqué et l'initier lors de l'exécution. Cependant, l'uitext doit être l'enfant du canevas.
la source
Si vous cherchez une solution rapide et sale pour le débogage, vous pouvez toujours utiliser l'ancienne solution Unity 4. Implémentez l'
OnGUI
événement de tout MonoBehavior que vous avez toujours actif pour appeler la classe GUI pour ajouter un élément d'interface utilisateur au cadre de rendu actuel.Si vous souhaitez utiliser le canevas, vous devez ajouter un script au canevas qui:
GUIText
objet de jeutransform
la toilela source