Affectation d'un objet dans une variable

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Répondre
GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Affectation d'un objet dans une variable

Message par GameWorldStudio » 29 Oct 2019 16:54

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 !

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Affectation d'un objet dans une variable

Message par Alesk » 29 Oct 2019 17:17

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.

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Affectation d'un objet dans une variable

Message par GameWorldStudio » 30 Oct 2019 21:31

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 !

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Affectation d'un objet dans une variable

Message par Alesk » 30 Oct 2019 22:59

Dans ce cas, regarde du côté des variables statiques ou des scriptable Objects : https://unity3d.com/fr/how-to/architect ... le-objects

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Affectation d'un objet dans une variable

Message par jmhoubre » 31 Oct 2019 18:05

Peut-être qu'en tagguant tes UI, textes et images et GameObject.FindGameObjectsWithTag ?

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Affectation d'un objet dans une variable

Message par GameWorldStudio » 31 Oct 2019 19:20

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 !

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Affectation d'un objet dans une variable

Message par GameWorldStudio » 23 Nov 2019 16:57

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

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Affectation d'un objet dans une variable

Message par boubouk50 » 25 Nov 2019 09:36

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.
"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

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Affectation d'un objet dans une variable

Message par jmhoubre » 25 Nov 2019 18:38

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.");
        }
    }
}

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: Affectation d'un objet dans une variable

Message par Max » 25 Nov 2019 19:07

Bonsoir,

Pour ce qui est du GameObject.Find, lui ne prend en compte que les objets actifs ;)
Image
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

Répondre

Revenir vers « Scripting »