Affectation d'un objet dans une variable
-
- Messages : 65
- Inscription : 29 Août 2017 10:34
Affectation d'un objet dans une variable
Bonjour à tous ! Alors voici mon problème :
J'ai un script dans lequel il y a plusieurs variable pouvant contenir des GameObject, Des textes et Des images.
Mon problème ici c'est que je ne connais pas le mot clé afin d'affecter l'objet automatiquement dans les variables de texte et d'images... Je m'explique :
Pour affecter automatiquement un GameObject dans une variable nous écrivons : Objet = GameObject.Find("Nom_de_l'objet");
Mais Quand je souhaite le faire sur une image ou un texte il me dit qu'il ne peut pas convertir un UI en GameObject, donc j'ai compris l'erreur mais je ne sais pas quel mot utiliser ou même si il y a une autre manière que de pour chaque affectation le faire manuellement... Voilà merci encore !
J'ai un script dans lequel il y a plusieurs variable pouvant contenir des GameObject, Des textes et Des images.
Mon problème ici c'est que je ne connais pas le mot clé afin d'affecter l'objet automatiquement dans les variables de texte et d'images... Je m'explique :
Pour affecter automatiquement un GameObject dans une variable nous écrivons : Objet = GameObject.Find("Nom_de_l'objet");
Mais Quand je souhaite le faire sur une image ou un texte il me dit qu'il ne peut pas convertir un UI en GameObject, donc j'ai compris l'erreur mais je ne sais pas quel mot utiliser ou même si il y a une autre manière que de pour chaque affectation le faire manuellement... Voilà merci encore !
Re: Affectation d'un objet dans une variable
Il vaut mieux éviter d'utiliser GameObject.Find() car c'est pas du tout optimal.
Le plus simple est de rendre tes variables publiques et de leur associer les objets directement depuis l'inspecteur d'Unity.
Le plus simple est de rendre tes variables publiques et de leur associer les objets directement depuis l'inspecteur d'Unity.
-
- Messages : 65
- Inscription : 29 Août 2017 10:34
Re: Affectation d'un objet dans une variable
Oui c'est sur mais les objets que je souhaite placer sont utiliser de manière récurrente (se sont des préfabs) et ça me prend du temps de toujours affecter ce qu'il faut à tout ces objet alors que c'est toujours la même chose.. Le mieux ça serai justement d'automatiser l'affectation de variables de manière automatique pour les éléments qui reviennent à chaque fois
Par exemple ici l'élément que je dois réaffecter à chaque fois est un texte, mais au lieux de l'affecter à chaque objet que je place je pourrai automatiser son affectation dans le script donc le texte s'affecte dans toute les variable de tout les objets placer dans la scène !
Par exemple ici l'élément que je dois réaffecter à chaque fois est un texte, mais au lieux de l'affecter à chaque objet que je place je pourrai automatiser son affectation dans le script donc le texte s'affecte dans toute les variable de tout les objets placer dans la scène !
Re: Affectation d'un objet dans une variable
Dans ce cas, regarde du côté des variables statiques ou des scriptable Objects : https://unity3d.com/fr/how-to/architect ... le-objects
Re: Affectation d'un objet dans une variable
Peut-être qu'en tagguant tes UI, textes et images et GameObject.FindGameObjectsWithTag ?
-
- Messages : 65
- Inscription : 29 Août 2017 10:34
Re: Affectation d'un objet dans une variable
Oui ! J'avais totalement oublier la méthode avec les Tag ! Je vais essayer et je vous tiens au courant, ce qui me facilite pas la tache c'est Visual Studio... J'utilise Visual 2019, et j'ai téléchargé cette version en dehors de Unity et lorsque je code j'ai pas les texte pré fais en fonction de ce que j'écris donc je dois toujours me souvenirs ^^' cependant votre suggestion m'a l'air très juste !
-
- Messages : 65
- Inscription : 29 Août 2017 10:34
Re: Affectation d'un objet dans une variable
Je ne peux malheureusement pas utiliser votre méthode car comme le dit la ligne, elle agis sur les "GameObject" donc forcément elle me dit que je ne peux pas convertir une UI en GameObject
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Affectation d'un objet dans une variable
Quel élément d'UI? (GUI ou UI?)
Les éléments d'UI sont des gameObjects. Par contre, il me semble que le Find () ne trouve pas les objets désactivés.
Les éléments d'UI sont des gameObjects. Par contre, il me semble que le Find () ne trouve pas les objets désactivés.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Affectation d'un objet dans une variable
Bonsoir,
Ne trouvant rien sur la documentation de Transform.Find, j'ai vérifié avec un p'tit script et Find trouve bien les objets désactivés. En revanche, comme le précise la documentation (elle est bien la doc, hein chef ? ), pas de recherche récursive, il ne trouve par défaut que les objets enfants du porteur de script, mais pas ses petits-enfants.
Code : Tout sélectionner
using UnityEngine;
public class FindTest : MonoBehaviour {
void Start() {
for (int i = 1; i < 6; i++) {
if (gameObject.transform.Find("Sphere" + i.ToString()))
Debug.Log("Sphere" + i.ToString() + " trouvée.");
else
Debug.Log("Sphere" + i.ToString() + " non trouvée.");
}
}
}
Re: Affectation d'un objet dans une variable
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ