[RÉSOLU] Modification textdu canvas

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Scurreo
Messages : 21
Inscription : 01 Déc 2017 18:14

[RÉSOLU] Modification textdu canvas

Message par Scurreo » 08 Déc 2017 15:20

Bonjour,

Je viens de créer un script qui sert à compter et à ramasser les feuilles que j'ai placer sur ma map. Ce script là je l'ai placé sur mon First Person Controller car c'est grâce à lui que je vais pouvoir les ramasser.
Cependant, dans mon Canvas j'ai un texte avec qui je voudrais qu'il affiche mon score sous la forme de "Papers: 0".
J'ai regarder de la doc et voilà mon script de base:

Code : Tout sélectionner

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

public class PaperCounter : MonoBehaviour
{
    public int Paper = 0;
    public int paperToWin = 6;

	// Use this for initialization
	void OnTriggerEnter (Collider other)
    {
	    if(other.gameObject.tag == "Paper")
        {
            Paper += 1;
            Destroy(other.gameObject);
        }
	}

    void OnGUI()
    {
        if (Paper < paperToWin)
        {
            GUI.Box(new Rect((Screen.width / 2) - 100, 10, 200, 35), "" + Paper + " Papers");
        }
        else
        {
            GUI.Box(new Rect((Screen.width / 2) - 100, 10, 200, 35), "All Papers Collected!");
        }
    }

    // Update is called once per frame
    void Update ()
    {
		
	}
}
Et celui que j'ai ajouter sur mon texte afin de voir si il faisait bien office de compteur mais ne marche pas. Je vous remercie d'avance.

Code : Tout sélectionner

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

public class PaperCounter : MonoBehaviour
{
    public int Paper = 0;
    public int paperToWin = 6;

    Text counterPaper;

    void Awake()
    {
        counterPaper = GetComponent<Text>();
        Paper = 0;
    }

    // Use this for initialization
    void OnTriggerEnter (Collider other)
    {
	    if(other.gameObject.tag == "Paper")
        {
            Paper += 1;
            Destroy(other.gameObject);
        }
	}

    // Update is called once per frame
    void Update ()
    {
		if(Paper < paperToWin)
        {
            counterPaper.text = "Papers: " + Paper;
        }
        else
        {
            counterPaper.text = "All papers collected";
        }
	}
}
Merci
Dernière édition par Scurreo le 08 Déc 2017 16:06, é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: Modification textdu canvas

Message par boubouk50 » 08 Déc 2017 15:32

Je comprends rien à ce que tu fais...

Il faut séparer deux choses: la collecte et l'affichage.
Tout doit se faire au moment de la collecte, l'affichage lui en dépend seulement, c'est juste une information.
Soit tu as un Manager qui s'occupe de la collecte soit tu le fais avec ton personnage.
Pour un Manager:
Il te faut que chaque papier ait un script (le même) qui lors de la collision (Trigger) avec le personnage envoie l'information +1 au Manager. Celui-ci, en se faisant appeler par un +1, va donc incrémenter le score, le tester et mettre à jour le texte.
Pour le Rigidbody:
Lorsque celui-ci en collision (Trigger) avec un papier, soit il envoie au Manager, soit il fait tout lui même (et donc est son propre manager).

Sur le rigidbody en une fois:

Code : Tout sélectionner

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

public class PaperCounter : MonoBehaviour
{
	private int paperCount = 0;	//Les variables commencent par une minuscule
	private int paperToWin = 6;
	public Text counterPaper;	//A remplir depuis l'inspector

	// Use this for initialization
	void OnTriggerEnter (Collider other)
    	{
		if(other.gameObject.tag == "Paper") //Attention à ce que tes papiers soient bien tagués Paper
		{
            		paperCount += 1;
            		Destroy(other.gameObject);
            		if(paperCount < paperToWin)
        		{
            			counterPaper.text = "Papers: " + paperCount;
        		}
        		else
        		{
 				counterPaper.text = "All papers collected";
			}
        	}
	}
}
"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

Scurreo
Messages : 21
Inscription : 01 Déc 2017 18:14

Re: Modification textdu canvas

Message par Scurreo » 08 Déc 2017 15:56

Désolé mais je dois encore apprendre beaucoup mais au moins j'essaye. Je pensais pas que cela était possible de faire mon propre manager comme tu viens de le montrer en tous cas merci encore!

Répondre

Revenir vers « Scripting »