[MY] Modifier la valeur d'une variable contenue dans un script avec un autre

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Monayy
Messages : 3
Inscription : 22 Avr 2019 16:33

[MY] Modifier la valeur d'une variable contenue dans un script avec un autre

Message par Monayy » 22 Avr 2019 17:02

Bonjour à tous, je réalise un projet en ISN (spé informatique en Terminale S), et je rencontre un problème. Je cherche à modifier une variable de type int définie dans un script, à partir d'un autre script.
Je cherche à pouvoir modifier les variables money, contentation et population en cliquant sur un bouton. (je voudrais ajouter un certain nombre ou en soustraire)

Mon script qui définie la variable :

Code : Tout sélectionner

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

public class PlayerStats : MonoBehaviour
{
	public static int money; // Création de la variable de type int money
	public static int contentation; // Création de la variable de type int contentation
   	public static int population; // Création de la variable de type int population
        public int startMoney = 10000; // On créer une variable startMoney à laquelle on donne une valeur
	public int startPopulation = 50000; // On créer une variable startPopulation à laquelle on donne une valeur
	public int startContentation  = 95; // On créer une variable startContentation à laquelle on donne une valeur
    	public Text countText1;
	public Text countText2;
	public Text countText3;
	private Rigidbody rb;

	public void Start()
	{
		money = startMoney; // On associe la variable money, avec la variable startMoney. Elle prends la valeur de startMoney
		population = startPopulation; // On associe la variable population, avec la variable startPopulation. Elle prends la valeur de startPopulation
        contentation = startContentation; // On associe la variable contentation, avec la variable startContentation. Elle prends la valeur de startContentation
        SetCountMoney (); // on appelle (exécute) la fonction SetCountMoney
		SetCountContentation ();
		SetCountPopulation ();
	}

	void SetCountMoney ()
	{
		countText1.text = money.ToString ();
	}
	void SetCountContentation ()
	{
		countText2.text = contentation.ToString ();
	}
	void SetCountPopulation ()
	{
		countText3.text = population.ToString ();
	}
}
Merci d'avance !

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [MY] Modifier la valeur d'une variable contenue dans un script avec un autre

Message par EmileF » 22 Avr 2019 18:55

Je n'ai pas très bien compris où est ton problème.

Sauf erreur il te suffit d'appeler tes champs "money" ou autre à partir du script de ton bouton, puisqu'ils sont publics et tu n'as d’ailleurs pas besoin de les mettre en static. Il te suffit de renseigner un champ "PlayerStats" dans le script de ton bouton pour appeler tes variables.

Tu peux aussi les mettre sous forme de propriétés, comme te le montre l'exemple suivant. Tu peux ainsi appeler tes variables et mettre à jour l'affichage en une seule opération.

Code : Tout sélectionner


    public Text countText1;
    [SerializeField] int money = 10000; //pour avoir accès à la valeur dans l'inspector;
    public int Money //Propriété accessible par un autre script
    {
        get { return money; }
        set
        {
            money = value;
            countText1.text = value.ToString();
        }
    }

    public Text countText2;
    [SerializeField] int contentation = 95; //pour avoir accès à la valeur dans l'inspector;
    public int Contentation //Propriété accessible par un autre script
    {
        get { return contentation; }
        set
        {
            contentation = value;
            countText2.text = value.ToString();
        }
    }

    public Text countText3;
    [SerializeField] int population = 50000; //pour avoir accès à la valeur dans l'inspector;
    public int Population //Propriété accessible par un autre script
    {
        get { return population; }
        set
        {
            population = value;
            countText3.text = value.ToString();
        }
    }


    // Use this for initialization
    void Start()
    {
        Money = money; //Pour initialiser la propriété Money et afficher le texte.
        Contentation = contentation;
        Population = population;
    }

j'espère avoir pu t'aider
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Monayy
Messages : 3
Inscription : 22 Avr 2019 16:33

Re: [MY] Modifier la valeur d'une variable contenue dans un script avec un autre

Message par Monayy » 22 Avr 2019 19:57

Merci beaucoup, je vais essayer ça.
Mon soucis était de créer un script pour pouvoir modifier la valeur de ma variable contenue dans le script que j'ai mis ici.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [MY] Modifier la valeur d'une variable contenue dans un script avec un autre

Message par EmileF » 22 Avr 2019 20:32

Si tu utilises un bouton UI, dans ton script tu ajoutes une fonction publique genre:

Code : Tout sélectionner

    
    public void AddMoney(int valeur)
    {
        Money += valeur;
    }
et dans l'évènement "On Clic()", tu ajoutes l'objet qui contient ton script , dans "function", la fonction "AddMoney" et au dessous tu mets la valeur à ajouter. voir https://docs.unity3d.com/Manual/script-Button.html pour plus de précision.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Monayy
Messages : 3
Inscription : 22 Avr 2019 16:33

Re: [MY] Modifier la valeur d'une variable contenue dans un script avec un autre

Message par Monayy » 22 Avr 2019 21:37

Merci beaucoup de l'aide, j'essayerai ça demain.
Encore merci pour ton aide

Répondre

Revenir vers « (C#) CSharp »