[RESOLU][Debutant] Valeur variable nulle = erreur !

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Zumo
Messages : 23
Inscription : 08 Déc 2022 01:08

[RESOLU][Debutant] Valeur variable nulle = erreur !

Message par Zumo » 17 Jan 2023 18:05

Bonjour à tous ! A chaque jours sa demande !
Je cherche a mettre en evidence des objects lorsque je m'approche d'eux. J'ai donc trouvé QuickOutline sur l'assets store.
Il fait exactement ce que je cherche sauf quie je seche sur un problème depuis pas mal d'heures...

Code : Tout sélectionner

void highlight()
    {
         if(Physics.Raycast(cam.transform.position,cam.transform.TransformDirection(Vector3.forward),out RaycastHit hit, Mathf.Infinity)) //lance le rayon vers le premier objet touché
        {
            if (isDebugLog) Debug.Log("Distance " + hit.transform.gameObject.name + " visé " + RoundValue(hit.distance,1)+ " Layer: "+hit.transform.gameObject.layer);

            //Si l'objet est taggé "surbrillance" et et a une disatnce inférieur a la variable "highlightDistance" et a le layer "highlightLayer"
            //if (hit.transform.gameObject.tag == "Surbrillance"  && hit.distance < highlightDistance && hit.transform.gameObject.layer == highlightLayer)
            

            if (hit.transform.gameObject.tag == "Surbrillance" && hit.distance < highlightDistance)
            {
                hittedObject = hit.transform.gameObject;
                if (isDebugLog) Debug.Log("Objet trouvé " + hittedObject.name+" Distance= "+ RoundValue(hit.distance, 1));
                hittedObject.GetComponent<Outline>().enabled = true;
            }
            else 
            {
                hittedObject.GetComponent<Outline>().enabled = false;
                if (isDebugLog) Debug.Log("Sinon " + hittedObject.name);
                hittedObject = null;
            }
            
            if (actionInputValue && hittedObject != null && hittedObject.name == "Sphere")
            {
                if (isDebugLog) Debug.Log("Détruire l'objet visé " + hittedObject.name);
                Destroy(hittedObject); //effacer l'objet
                
            }
        }
    }
LMon soucis est que j'ai des erreurs à la ligne "hittedObject.GetComponent<Outline>().enabled = false;"
Je pense comprendre qu'il n'y a pas de valeur sur cette variable après avoir était réinitialisé mais je ne sais pas comment gérer ça ! J'ai essayer plein de chose mais je me suis un peu perdu...
Au secours ! ::d
UnassignedReferenceException: The variable hittedObject of Interaction has not been assigned.
You probably need to assign the hittedObject variable of the Interaction script in the inspector.
UnityEngine.GameObject.GetComponent[T] () (at <4746c126b0b54f3b834845974d1a9190>:0)
Interaction.highlight () (at Assets/Scripts/Interaction.cs:59)
Interaction.Update () (at Assets/Scripts/Interaction.cs:38)
Dernière édition par Zumo le 18 Jan 2023 10:59, édité 1 fois.

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

Re: [Debutant] Valeur variable nulle = erreur !

Message par boubouk50 » 17 Jan 2023 18:26

hittedObject peut ne pas exister puisque tu ne l'affectes pas dans le else. (il l'est dans le if)
Tu dois donc tester sa nullité avant de pouvoir l'utiliser.
"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

Zumo
Messages : 23
Inscription : 08 Déc 2022 01:08

Re: [Debutant] Valeur variable nulle = erreur !

Message par Zumo » 17 Jan 2023 21:15

Dis comme ça je ne comprend même pas comment j'ai pu passer tant de temps à chercher ce qui n'allais pas ! :(

Merci pour ton aide !

J'ai fais comme ça :

Code : Tout sélectionner

if(hittedObject!=null) hittedObject.GetComponent<Outline>().enabled = false;
Il y a sans doute mieux ?

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

Re: [Debutant] Valeur variable nulle = erreur !

Message par boubouk50 » 18 Jan 2023 09:27

Oui, puisque le debug aussi te sortira la même erreur.

Code : Tout sélectionner

if (hit.transform.gameObject.tag == "Surbrillance" && hit.distance < highlightDistance)
{
	hittedObject = hit.transform.gameObject;
	hittedObject.GetComponent<Outline>().enabled = true;
                
	if (isDebugLog)
		Debug.Log("Objet trouvé " + hittedObject.name+" Distance= "+ RoundValue(hit.distance, 1));
}
else 
{
	if (hittedObject != null)
	{
		if (isDebugLog)
			Debug.Log("Sinon " + hittedObject.name);
                		
		hittedObject.GetComponent<Outline>().enabled = false;
		hittedObject = null;
	}
}
"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

Zumo
Messages : 23
Inscription : 08 Déc 2022 01:08

Re: [Debutant] Valeur variable nulle = erreur !

Message par Zumo » 18 Jan 2023 10:58

Top merci

Répondre

Revenir vers « Scripting »