Page 1 sur 1

Affectation d'un objet dans une variable

Publié : 29 Oct 2019 16:54
par GameWorldStudio
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 !

Re: Affectation d'un objet dans une variable

Publié : 29 Oct 2019 17:17
par Alesk
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.

Re: Affectation d'un objet dans une variable

Publié : 30 Oct 2019 21:31
par GameWorldStudio
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 !

Re: Affectation d'un objet dans une variable

Publié : 30 Oct 2019 22:59
par Alesk
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

Publié : 31 Oct 2019 18:05
par jmhoubre
Peut-être qu'en tagguant tes UI, textes et images et GameObject.FindGameObjectsWithTag ?

Re: Affectation d'un objet dans une variable

Publié : 31 Oct 2019 19:20
par GameWorldStudio
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 !

Re: Affectation d'un objet dans une variable

Publié : 23 Nov 2019 16:57
par GameWorldStudio
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

Re: Affectation d'un objet dans une variable

Publié : 25 Nov 2019 09:36
par boubouk50
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.

Re: Affectation d'un objet dans une variable

Publié : 25 Nov 2019 18:38
par jmhoubre
Bonsoir,
boubouk50 a écrit :
25 Nov 2019 09:36
Par contre, il me semble que le Find () ne trouve pas les objets désactivés.
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 ? :intello: ), 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

Publié : 25 Nov 2019 19:07
par Max
Bonsoir,

Pour ce qui est du GameObject.Find, lui ne prend en compte que les objets actifs ;)