[RESOLU] Récupérer un Component d'un autre gameObject

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Répondre
IlLupo
Messages : 7
Inscription : 30 Août 2018 22:18

[RESOLU] Récupérer un Component d'un autre gameObject

Message par IlLupo » 30 Août 2018 22:27

Bonjour, voila j'ai un probleme, je voudrais appeler une fonction dans un second script mais impossible je regarde depuis hier sur des forums, youtube etc il y a donc un truc que je ne dois pas comprendre donc j'ai suivi la doc d'unity : ici
mais je pense qu'il y a un probleme de compatibilité avec la version 5

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TextP : MonoBehaviour {
    private CodeP MainCode;
    void Awake () {
        MainCode = GetComponent<Codep>();
    }
	
	void Start () {
        Debug.Log(CodeP.C);
	}
}
en gros je voudrais recuperer la variable C se trouvant CodeP et l'appeler dans le script TextP

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

Re: Appel Fonction

Message par Max » 30 Août 2018 22:42

Bonsoir,

Deux soucis quand je lis ton code.
Le premier est un problème de majuscule/minuscule. Dans ton code, tu as Codep et CodeP, ce qui n'est pas la même chose. Si ta classe se nomme CodeP, alors tu dois écrire GetComponent<CodeP>();
En suite, tu définis private CodeP MainCode; (en passant, par convention, pour les noms de data, pas de majuscule en tête normalement), mais dans ton Debug, tu cherches à atteindre 'C' dans la définition de classe et nom pas sur MainCode. On devrait plutôt s'attendre à lire Debug.Log(MainCode.C);.
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

IlLupo
Messages : 7
Inscription : 30 Août 2018 22:18

Re: Appel Fonction

Message par IlLupo » 30 Août 2018 22:48

Merci beaucoup de cette reponse rapide !! j'ai tout corrigé (et compris xd) il me reste une erreur

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TextP : MonoBehaviour {
    private CodeP MainCode;
    void Awake () {
        MainCode = GetComponent<CodeP>();
    }
	
	void Start () {
        Debug.Log(MainCode.C);
	}
}

les deux "codeP sont soulignés en rouge" car "le nom de type ou d'espace codeP est introuvable" je n'y comprends rien

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

Re: Appel Fonction

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

CodeP doit correspondre à une classe, dérivant de MonoBehaviour, et utilisé comme component sur ton GameObject.
Au vue du message d'erreur, on peut penser que se n'est pas le cas. As tu bien un script CodeP quelque part ?
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

IlLupo
Messages : 7
Inscription : 30 Août 2018 22:18

Re: Appel Fonction

Message par IlLupo » 30 Août 2018 23:17

merci !!! grace a vous j'ai compris l'erreur il ne trouvait effectivement pas la classe mais c'etais juste parceque j'avais changé le nom et le nom de la classe n'avait pas suivi .... erreur très bete merci beaucoup !!!

IlLupo
Messages : 7
Inscription : 30 Août 2018 22:18

Re: Appel Fonction

Message par IlLupo » 30 Août 2018 23:55

j'ai un dernier soucis :gene: maintenant la console me retourne une erreur lors ce que le script tente de recuperer la variable
NullReferenceException: Object reference not set to an instance of an object
TextP.Start () (at Assets/TextP.cs:12)

IlLupo
Messages : 7
Inscription : 30 Août 2018 22:18

Re: Appel Fonction

Message par IlLupo » 31 Août 2018 00:02

Je suis passé par l'intermédiaire d'une autre variable , le probleme se trouve à la ligne 11, où se trouve

Code : Tout sélectionner

c = MainCode.C;

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class TextP : MonoBehaviour {
    int c;
    private CodeP MainCode;
    void Awake () {
        MainCode = GetComponent<CodeP>();
        c = MainCode.C;
    }
	
	void Start () {

        Debug.Log(c);
	}
}

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

Re: Appel Fonction

Message par boubouk50 » 31 Août 2018 09:00

C'est toujours la même erreur en soi, tu l'as juste déplacée dans une variable.

GetComponent <T> () renvoie le Component T du gameObject sur lequel est appliqué ce script. Donc ton Component CodeP doit être attaché à ce même gameObject. Sinon, il faut référencer le gameObject qui possède ce component.

Aussi, il faut que la variable C existe dans CodeP.
"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

IlLupo
Messages : 7
Inscription : 30 Août 2018 22:18

Re: Appel Fonction

Message par IlLupo » 31 Août 2018 14:11

Merci beaucoup !!!!!
voici mon script sans erreur pour les interesses :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class TextP : MonoBehaviour {
    public GameObject otherGameObject;
    int c;
    private CodeP MainCode;
    void Awake () {
        MainCode = otherGameObject.GetComponent<CodeP>();
        c = MainCode.C;
    }
	
	void Start () {

        Debug.Log(c);
	}
}

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

Re: Appel Fonction

Message par boubouk50 » 31 Août 2018 14:14

Lorsque tu trouves la solution à ton problème, merci d'éditer le titre du premier message et d'ajouter [RESOLU] en début de celui-ci pour le signaler aux autres membres.
Je m'en occupe cette fois-ci.
"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

Répondre

Revenir vers « Scripting »