Menu
CoddyTech

Le score

Leçon 11 sur 14 du cours Jeu Unity : Snake 3D de Coddy.

Le score augmente dans GameManager, mais personne ne peut le voir. Un texte TextMeshPro dans le coin supérieur gauche l’affiche : un champ TMP_Text défini dans l’Inspector, et sa propriété text renseignée depuis le code.

Écris le texte au même endroit que celui où le nombre change, après la modification. Ainsi, l’écran ne prend jamais de retard sur le score. Une boutique met à jour ses pièces de la même façon :

public void Buy(int price)
{
    coins -= price;
    coinsText.text = "Coins: " + coins;
}

Définis aussi le texte une fois dans Start(), pour que la première image affiche le vrai score, quel que soit le texte indiqué dans la scène.

challenge icon

Défi

Moyen

Affiche le score à l’écran.

  1. Dans GameManager, ajoute using TMPro; et public TMP_Text scoreText; (la scène relie ScoreText).
  2. Dans Start(), affiche Score: 0.
  3. Dans Eat(), après le point, affiche "Score: " + score.

Appuie sur « Jouer » et mange : en haut à gauche, le score affiche Score: 1, Score: 2. Puis appuie sur « Vérifier ».

Essayez vous-même

using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;
    private int score;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    public bool IsFood(Vector3 cell)
    {
        return cell == food.position;
    }

    public void Eat()
    {
        score++;
        MoveFood();
    }

    void MoveFood()
    {
        List<Vector3> free = new List<Vector3>();
        for (int x = -snake.edge; x <= snake.edge; x++)
        {
            for (int z = -snake.edge; z <= snake.edge; z++)
            {
                Vector3 cell = new Vector3(x, 0f, z);
                if (!snake.Occupies(cell))
                {
                    free.Add(cell);
                }
            }
        }
        food.position = free[Random.Range(0, free.Count)];
    }
}

Toutes les leçons de Jeu Unity : Snake 3D

Entraînez-vous par vous-même : Playground Unity