[DB-AL]erreur FindChild : type ou membre obsolète

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
PTM3XAZ
Messages : 6
Inscription : 22 Août 2018 19:15

[DB-AL]erreur FindChild : type ou membre obsolète

Message par PTM3XAZ » 22 Août 2018 21:39

Bonsoir,

Je poste ce message afin de vous présentez un problème de script. J'y suis confronté depuis deux jours et je ne trouve pas de solutions.
Je suis la série de tutoriel de Madeiin83 sur Youtube pour créer un système d'inventaire.
A partir de la minute 18"30, j'ai donc reproduis le script comme indiqué pour la partie void awake.
Cependant j'ai ceci qui s'affiche et cela provoque une erreur sur l'ensemble du script et sur le rendu ensuite sur unity(cf photo)
Je vous fait un pastebin de la partie du script en question et vous mets en lien la vidéo de Madeiin83.
==> https://pastebin.com/tDHAkt68

Code : Tout sélectionner

void Awake()
    {
        // Declare image attribute
#pragma warning disable CS0618 // Le type ou le membre est obsolète
        image = transform.FindChild("Image").GetComponent<Image>();
#pragma warning restore CS0618 // Le type ou le membre est obsolète
 
        // Declare quantity text.
#pragma warning disable CS0618 // Le type ou le membre est obsolète
        quantityText = transform.FindChild("Quantity").GetComponent<Text>();
#pragma warning disable CS0618 // Le type ou le membre est obsolète
    }
Je précise qu'avant d'y avoir les lignes : #pragma warning disable CS0618 // Le type ou le membre est obsolète,
j'avais un liserer vert en dessous de transform.FindChild() sur les deux lignes :
- image = transform.FindChild("Image")
- quantityText = transform.FindChild("Quantity")

Voici la vidéo en question.
==> https://www.youtube.com/watch?v=uhrlx-EJGmA

Voici le rendu sur unity en pièce jointe

[img]file:///C:/Users/briol/AppData/Local/Temp/forum1.webp[/img]

Pouvez-vous m'aider ?

Bien à vous,
.
 ! Message de : Max
Postez directement votre code avec les balises adéquate (je l'ai fais dans le cas présent).
Et pour l'image, il s'agit d'un fichier local (sur votre DD), donc impossible à consulter en ligne.

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

Re: [DB-AL]erreur FindChild : type ou membre obsolète

Message par Max » 23 Août 2018 09:21

Bonjour,
PTM3XAZ a écrit :
22 Août 2018 21:39
Je précise qu'avant d'y avoir les lignes : #pragma warning disable CS0618 // Le type ou le membre est obsolète,
j'avais un liserer vert en dessous de transform.FindChild() sur les deux lignes :
- image = transform.FindChild("Image")
- quantityText = transform.FindChild("Quantity")
La méthode FindChild est obsolète, elle ne fait plus parti des méthodes de la classe Transform.
Au fil des versions d'Unity, l'API évolue. Les méthodes ou fonctions dépréciées trouvent ,normalement un substitut.
Dans ton cas il faut remplacer FindChild par Find. D'ailleurs, dans certains cas l'éditeur fait la correction automatiquement sur le code.

Le soucis de certains tuto est qu'ils commencent à dater et ne sont pas mis à jour au fil des évolutions du moteur.
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

PTM3XAZ
Messages : 6
Inscription : 22 Août 2018 19:15

Re: [DB-AL]erreur FindChild : type ou membre obsolète

Message par PTM3XAZ » 23 Août 2018 22:09

La méthode FindChild est obsolète, elle ne fait plus parti des méthodes de la classe Transform.
Au fil des versions d'Unity, l'API évolue. Les méthodes ou fonctions dépréciées trouvent ,normalement un substitut.
Dans ton cas il faut remplacer FindChild par Find. D'ailleurs, dans certains cas l'éditeur fait la correction automatiquement sur le code.
Merci pour ta réponse rapide !
J'ai pu rectifier les deux lignes de code, en revanche, je ne parviens pas à trouver la solution concernant mon inventorywindow qui as changer d'aspect (je voulais le montrer en image).
Ma question va te sembler bête mais ...
Peux-tu me dire comment partager une image (actuellement sur mon disque dure) en ligne sur le forum ?

Je me retrouve également avec une erreur sur ce code :

" quantityText.text = (currentItem.quantity <= 0) ? "" : currentItem.quantity.ToString(); "

ou Unity m'indique une méthode différente :

https://pastebin.com/jDrSifAS

Code : Tout sélectionner

public void RefreshQuantity()
    {
        if (quantityText == null) return;
        NewMethod();
    }
 
    private void NewMethod()
    {
        quantityText.text = (currentItem.quantity <= 0) ? "" : currentItem.quantity.ToString();
    }
    #endregion
Bien à toi,

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

Re: [DB-AL]erreur FindChild : type ou membre obsolète

Message par Max » 24 Août 2018 09:39

PTM3XAZ a écrit :
23 Août 2018 22:09
Ma question va te sembler bête mais ...
Peux-tu me dire comment partager une image (actuellement sur mon disque dure) en ligne sur le forum ?
Passe par un site d'hébergement d'image, genre GooPics ou autre.
PTM3XAZ a écrit :
23 Août 2018 22:09
Je me retrouve également avec une erreur sur ce code :

" quantityText.text = (currentItem.quantity <= 0) ? "" : currentItem.quantity.ToString(); "
et l'erreur est ? Poste le(s) message(s) affiché(s) dans la console, cela aidera grandement ceux qui souhaiteraient t'aider.
PTM3XAZ a écrit :
23 Août 2018 22:09
ou Unity m'indique une méthode différente :

https://pastebin.com/jDrSifAS
Comme demandé dans ton premier message, poste ton code directement ici, encadré par les balise code. Je le refais dans ton dernier message.
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

PTM3XAZ
Messages : 6
Inscription : 22 Août 2018 19:15

Re: [DB-AL]erreur FindChild : type ou membre obsolète

Message par PTM3XAZ » 26 Août 2018 17:44

Bonjour Max,

Voici le code en question

Code : Tout sélectionner

public void RefreshQuantity()
    {
        if (quantityText == null) return;

        quantityText.text = (currentItem.quantity <= 0) ? "" : currentItem.quantity.ToString();
    }
Lorsque je vérifie ce dernier en cliquant sur Play j'ai ceci en retour (cf image)

Image

En double cliquant sur l'erreur indiqué en console; Unity me demande d'apporter une modification sur la méthode
de mon code mais la méthode en question ne change rien.

Image

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

Re: [DB-AL]erreur FindChild : type ou membre obsolète

Message par Max » 26 Août 2018 18:07

Bonjour,

Le message d'erreur t'indique que sur la ligne 103, la référence d'un des objets est 'null' (NullReferenceException).
Vu qu'un test est fait sur quantityText, on peut penser qu'il s'agit de currentItem...
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

PTM3XAZ
Messages : 6
Inscription : 22 Août 2018 19:15

Re: [DB-AL]erreur FindChild : type ou membre obsolète

Message par PTM3XAZ » 29 Août 2018 13:24

Salux Max, désolé pour la réponse tardive, j'étais pas mal occupé ces deux derniers jours.

Oui c'est exact, j'ai pas regarder la vidéo en entier, plus tard sur celle-ci le code a été rectifier et l'erreur a été résolue.
En revanche, je ne comprends pas d'où vient l'erreur sur mon window principal, les slots ne sont plus séparés.
Je vais reprendre l'intégralité de la vidéo pour comprendre d'où vient le problème, jusqu'à maintenant tout allait bien ...

Répondre

Revenir vers « Scripting »