Page 2 sur 3

Re: [DB-AL]Properties Long cLick

Publié : 28 Fév 2019 16:32
par 1300vrtical
C'est super étrange, c'est toujours la même erreur. Cette ligne est toujours source de problème:

Code : Tout sélectionner

Debug.Log(variable_Type_Fichier_Pour_Acceder_Au_Fichier_A.un_Int_Accessible_Depuis_LExterieur_Ficher_A);
:snif:
Assets\OBJ\Perso.cs(47,66): error CS1061: 'KLongClick' does not contain a definition for 'un_Int_Accessible_Depuis_LExterieur_Ficher_A' and no accessible extension method 'un_Int_Accessible_Depuis_LExterieur_Ficher_A' accepting a first argument of type 'KLongClick' could be found (are you missing a using directive or an assembly reference?)
:pleur4:

Re: [DB-AL]Properties Long cLick

Publié : 28 Fév 2019 19:09
par Max
Salut,

reposte tes deux codes, car il là, ligne 49, même si tu la donnes, comme c'est hors contexte, il est difficile d'en dire plus...
Pis utilisez des noms encore plus long, c'est tellement lisible :mrgreen:

Re: [DB-AL]Properties Long cLick

Publié : 28 Fév 2019 19:13
par 1300vrtical
Pardon :gene: , Pardon :gene2: ,
ScriptA:

Code : Tout sélectionner

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

public class Perso : MonoBehaviour
{
 
// Declaration d'une variable de type fichier/script
public KLongClick variable_Type_Fichier_Pour_Acceder_Au_Fichier_A;

 void Start()
 {
 	//Initialisation de la variable de type fichier/script.
 	 variable_Type_Fichier_Pour_Acceder_Au_Fichier_A = GetComponent<KLongClick>();
 }

   //  Update is called once per frame  // 
   void Update()
   {
       // Acces à la variable de type Int du fichier A
       Debug.Log(variable_Type_Fichier_Pour_Acceder_Au_Fichier_A.un_Int_Accessible_Depuis_LExterieur_Ficher_A);
   }
}

ScriptB

Code : Tout sélectionner

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

public class KLongClick : MonoBehaviour
{
       public int un_Int_Accessible_Depuis_LExterieur_Ficher_A;

#region properties
#endregion
#region Method
    void Start()
    {
        un_Int_Accessible_Depuis_LExterieur_Ficher_A = 1;
    }
    private void Update()
   {
      un_Int_Accessible_Depuis_LExterieur_Ficher_A ++;
      if (un_Int_Accessible_Depuis_LExterieur_Ficher_A  > 1000) un_Int_Accessible_Depuis_LExterieur_Ficher_A  = 1;
   }
}   
#endregion



Re: [DB-AL]Properties Long cLick

Publié : 28 Fév 2019 19:25
par Max
Etrange, les script que tu liste semble ok.
Par contre, je ne comprend pas trop, le message d'erreur donne la ligne 49 de Perso.cs, alors que celui que tu fournis au dessus en comporte guère plus d'un vingtaine :-/

Re: [DB-AL]Properties Long cLick

Publié : 28 Fév 2019 20:08
par 1300vrtical
Oui, c'est parce que j'avais mon ancien code en commentaire au cas où (/* ancien code*/) histoire de ne pas tout perdre!
Du coups on n'as pas de piste...

Re: [DB-AL]Properties Long cLick

Publié : 28 Fév 2019 21:01
par Max
Arf, je viens de capter.
Dans ton script Perso, ta variable de type KLongClick est publique, mais dans le Start tu fais un GetComponent, ce qui laisse penser que les deux scripts sont sur le même GO. Ou alors il faut virer le GetComponent et assigner le script via l'inspector.

Re: [DB-AL]Properties Long cLick

Publié : 01 Mars 2019 13:55
par 1300vrtical
Bonjour,
J'y arrive pas, j'ai essayé de tout modifier avec cette recherche de component:

Code : Tout sélectionner

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

public class Perso : MonoBehaviour
{
 
// Declaration d'une variable de type fichier/script
//public KLongClick variable_Type_Fichier_Pour_Acceder_Au_Fichier_A;

 void Start()
 {
 	//Initialisation de la variable de type fichier/script.
 	 //int variable_Type_Fichier_Pour_Acceder_Au_Fichier_A =  GameObject.Find("DirectionalLight").GetComponent(KLongClick).LongClick(); <-- cette ligne ci m'a servit à chercher le component dans un autre GO. 
   KLongClick KC = GetComponent<KLongClick>();
   
  
 }

   //  Update is called once per frame  // 
   void Update()
   {
       // Acces à la variable de type Int du fichier A
       Debug.Log(KC.un_Int_Accessible_Depuis_LExterieur_Ficher_A);
   }
}

Code : Tout sélectionner

Assets\OBJ\Perso.cs(49,18): error CS0103: The name 'KC' does not exist in the current context.

C'est ce qui bloque, je suppose, mais je ne comprends pas pourquoi. Tout est là pour que ça fonctionne. Je vais continuer mon projet en évitant les appels à variable...

:merci: Merci pour votre aide :merci:
1300vrtical

Re: [DB-AL]Properties Long cLick

Publié : 01 Mars 2019 13:59
par Max
Salut,

C'est normal. Quand tu écris ceci:

Code : Tout sélectionner

void Start()
 {
   KLongClick KC = GetComponent<KLongClick>();
     
 }
ta variable KC est locale, et sa portée restera cantonné à la méthode Start().
Il faut qu'elle soit globale. Par exemple:

Code : Tout sélectionner

...
KLongClick KC;
...
void Start()
{
    KC = GetComponent<KLongClick>();
}

Re: [DB-AL]Properties Long cLick

Publié : 02 Mars 2019 11:55
par 1300vrtical
:merci: Merci :amen: , ça marche bien et en plus j'en apprends plus sur le scripting! :super:

Mais j'ai l'impression de trébucher à chaque pas... à présent ça me renvoit le message suivant:

Code : Tout sélectionner

NullReferenceException: Object reference not set to an instance of an object.
Perso.Update () (at Assets/OBJ/Perso.cs:58)
Sur internet, j'ai trouvé cette solution, qui me semble un pansement pour que le jeu fonctionne sans pour autant résoudre le problème. ' if(KC != null)' ne sert qu'une seule fois pour mute le dysfonctionnement...
j'ai l'impression que 'KC.un_Int_Accessible_Depuis_LExterieur_Ficher_A' fonctionne à moitié, car lorsque je me trompe de type de variable, j'ai un message dans la console qui me rappelle à l'ordre, mais lorsque je veux savoir quelle variable c'est dans mon Debug.Log, il me renvoie: référence null… je ne sais pas sur quoi je bute dans le flou de mes connaissances en C#...

Merci encore pour votre aide et vos réponses infaillibles.

Re: [DB-AL]Properties Long cLick

Publié : 02 Mars 2019 12:09
par Max
Bonjour,
1300vrtical a écrit :
02 Mars 2019 11:55
... et en plus j'en apprends plus sur le scripting! :super:
...
je ne sais pas sur quoi je bute dans le flou de mes connaissances en C#...
Je pense surtout que tu devrais prendre un peu de temps pour apprendre les bases, en C# comme pour Unity, et tu ne "trébucherais" pas, comme tu dis, sur ce genre de problématique très basique ;)

La ton soucis visiblement est que ta référence "KC" est null dans ton script Perso.cs. Donc elle n'est pas renseignée dans l'inspector au niveau du Component "Perso.cs", ou alors tu essais de la récupérer par le biais d'un GetComponent qui ne trouve ... rien. Le soucis se trouve là.
Le fait de tester KC pour savoir si c'est à null ou pas ne règle pas ton soucis. Il te permet juste de shunter certaines parties du code liée à l'emploi de cette référence si elle est à null (et donc d'éviter de générer des erreurs).