[RÉSOLU]Variable qui disparais sans raison.

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
jlap537
Messages : 41
Inscription : 01 Mai 2024 12:43
Localisation : saint-saturnin-sur-Loire (49)

[RÉSOLU]Variable qui disparais sans raison.

Message par jlap537 » 03 Mai 2024 15:22

J'était tranquillement en train de créer un terrain pour un jeu et quand je teste mon jeu, je remarque de deux variables de mon code si dessous ont disparues ! La première variable servait a changer la vitesse de mon véhicule et l'autre servait a faire tourner mon véhicule. J'ai beau vérifier mon script mais rien n'a changé.

Pouvez-vous m'aider a faire réapparaitre ses deux variables ?

Code : Tout sélectionner

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

public class PlayerControler : MonoBehaviour
{
    private float speed = 20;
    private float turnSpeed;
    private float horizontalInput;
    private float forwardInput;

    // Start is called before the first frame update
    void Start()
    {
        
    }
  
  
    void Update()
    {
        horizontalInput = Input.GetAxis("Horizontal");
        forwardInput = Input.GetAxis("Vertical");
        

        transform.Translate(Vector3.forward * Time.deltaTime * speed * forwardInput) ;
        transform.Rotate(Vector3.up, turnSpeed * horizontalInput * Time.deltaTime);
    }
}
/code]
Pièces jointes
Capture d’écran 2024-05-03 à 10.09.20.png
variable disparues.
Capture d’écran 2024-05-03 à 10.09.20.png (19.63 Kio) Consulté 184 fois
"Avant Internet, on acceptait tout le temps un petit cookie sucré. Maintenant, vaut mieux ne pas les accepter, car ils riquent d'avoir un gout amère..."

jlap537
Messages : 41
Inscription : 01 Mai 2024 12:43
Localisation : saint-saturnin-sur-Loire (49)

Re: [RÉSOLU]Variable qui disparais sans raison.

Message par jlap537 » 03 Mai 2024 15:47

J'ai finalement réussi a changer mes variable en modifiant directement le code si dessous dans la partie "private float".

Code : Tout sélectionner

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

public class PlayerControler : MonoBehaviour
{
    private float speed = 20;
    private float turnSpeed = 100;
    private float horizontalInput;
    private float forwardInput;

    // Start is called before the first frame update
    void Start()
    {
        
    }
  
  
    void Update()
    {
        horizontalInput = Input.GetAxis("Horizontal");
        forwardInput = Input.GetAxis("Vertical");
        

        transform.Translate(Vector3.forward * Time.deltaTime * speed * forwardInput) ;
        transform.Rotate(Vector3.up, turnSpeed * horizontalInput * Time.deltaTime);
    }
}
/code]
"Avant Internet, on acceptait tout le temps un petit cookie sucré. Maintenant, vaut mieux ne pas les accepter, car ils riquent d'avoir un gout amère..."

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

Re: [RÉSOLU]Variable qui disparais sans raison.

Message par boubouk50 » 03 Mai 2024 16:47

Je vois que le concept de scope (portée en français) ne t'est pas familier :
private : accessible uniquement dans la classe
public : accessible par les autres classes via une référence
Ce sont les 2 plus utilisées, donc pas besoin d'aller plus loin.

Une variable private n'apparaît pas depuis l'inspecteur sauf si elle possède un attribut spécifique à Unity pour l'exposer : [SerializeField].
Une variable public apparaît depuis l'inspecteur sauf si elle possède un attribut spécifique à Unity pour la masquer : [HideInInspector].

Donc si tu veux que tes variables apparaissent, il faut mettre [SerializeField] avant private ou les passer en public. La première solution est plus judicieuse, même si pour toi, c'est pareil au final.
"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

jlap537
Messages : 41
Inscription : 01 Mai 2024 12:43
Localisation : saint-saturnin-sur-Loire (49)

Re: [RÉSOLU]Variable qui disparais sans raison.

Message par jlap537 » 03 Mai 2024 17:04

Oui, mais moi, j'aimerais bien savoir pourquoi avant, ces variables apparaissaient et plus maintenant alors que je n'ai pas touché au code. Et aussi, merci pour le conseil boubouk50.
"Avant Internet, on acceptait tout le temps un petit cookie sucré. Maintenant, vaut mieux ne pas les accepter, car ils riquent d'avoir un gout amère..."

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

Re: [RÉSOLU]Variable qui disparais sans raison.

Message par boubouk50 » 03 Mai 2024 17:15

L'informatique, ce n'est pas de la magie, ça fait ce qu'on lui dit de faire.
Si ça disparait, c'est qu'il s'est passé une de ces 3 choses :
  • Le code a changé et les variables sont passées en private au lieu de public ou [SerializeField] private
  • L'affichage d'Unity est passé de debug à normal (menu 3 points en haut à droite de l'onglet Inspector ->Normal / Debug)
  • Tu confonds avec un autre script
"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

jlap537
Messages : 41
Inscription : 01 Mai 2024 12:43
Localisation : saint-saturnin-sur-Loire (49)

Re: [RÉSOLU]Variable qui disparais sans raison.

Message par jlap537 » 03 Mai 2024 17:30

Il me semble justement avoir cliqué sur les trois petits point et avoir normal a la place de debug. Donc est ce que si je repasse de debug a normal mes deux variables reapparaitrons ?
"Avant Internet, on acceptait tout le temps un petit cookie sucré. Maintenant, vaut mieux ne pas les accepter, car ils riquent d'avoir un gout amère..."

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

Re: [RÉSOLU]Variable qui disparais sans raison.

Message par boubouk50 » 03 Mai 2024 17:44

Oui.
Le mode Debug permet de visualiser les variables en temps réel.
Cependant, les variables private ne seront pas pour autant accessibles, juste tu pourras voir leur donnée.
"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 »