[RESOLU]Passer une variable d'une scène à une autre (C#)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Bilu
Messages : 91
Inscription : 20 Nov 2019 09:24

[RESOLU]Passer une variable d'une scène à une autre (C#)

Message par Bilu » 16 Déc 2020 16:59

Bonjour à tous,

J'aimerai passer une variable d'une scène à une autre. Cette variable est le temps de survie du joueurs

Donc j'utilise les lignes suivantes pour enregistrer le temps dans la première scene

Code : Tout sélectionner

void OnDisable()
    {
        PlayerPrefs.SetFloat("score", time);
    }
Dans la seconde scène j'utilise les lignes suivantes

Code : Tout sélectionner

public class ScoreDisplayer : MonoBehaviour
{
    Text scoreText;
    float time = 0.0f ;
    
    void Update()
    {
        OnEnable();
        ScoreDisplay(time);

    }

    void OnEnable()
    {
        time = PlayerPrefs.GetFloat("score");
    }

    public void ScoreDisplay(float value)
    {
        scoreText.text = ("Votre score est : " + value);
    }

}
Mais le score ne s'affiche pas car
"Object reference not set to an instance of a object
... ScoreDisplayer cs20
... ScoreDisplayer cs31
Ces deux lignes sont surlignées en jaune

Je comprends ce que veut dire le message d'erreur mais je ne comprends pas pourquoi il survient dans ce cas ? 🤔

Pourriez vous m'aider à comprendre s'il vous plaît ?

Bien à vous

Bilu
Dernière édition par Bilu le 16 Déc 2020 18:53, édité 1 fois.

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: Passer une variable d'une scène à une autre (C#)

Message par DevAmat » 16 Déc 2020 17:08

Bonjour,

Dans ta seconde scène, tu n'as peux être pas assigné la variable "scoreText". Si c'est le cas ta variable vaut "null".
Ta variable est en "private" et tu ne l'assignes pas dans ce que tu montres.

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

Re: Passer une variable d'une scène à une autre (C#)

Message par boubouk50 » 16 Déc 2020 17:09

Object reference not set to an instance of a object.
Un objet n'est pas référencé et vous essayez d'y accéder.
Tu as donc un objet null et tu essaies d'accéder à quelque chose à l'intérieur ce qui n'est pas possible.
Dans la ligne incriminée

Code : Tout sélectionner

scoreText.text = ("Votre score est : " + value);
Seul scoreText est un objet et text une propriété que tu essaies d'accéder. scoreText étant null, text est inaccessible -> ERREUR.
Il te faut référencer scoreText, depuis l'inspecteur ou depuis l'Awake de ton code.
"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

Bilu
Messages : 91
Inscription : 20 Nov 2019 09:24

Re: Passer une variable d'une scène à une autre (C#)

Message par Bilu » 16 Déc 2020 18:53

En effet j'ai oublié d'assigner un objet à scoreText ... Je me sens très bête :oops:

Merci DevAmat ! Merci boubouk50 !

C'est maintenant reglé

Répondre

Revenir vers « Scripting »