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
  1. Dans GameManager, ajoute using TMPro; et public TMP_Text scoreText;. Dans la scène, associe-le à ScoreText, en haut à gauche.
  2. Dans Start(), affiche Score: 0.
  3. Dans Eat(), affiche le nouveau score, par exemple Score: 3 après le troisième aliment.

Appuie sur Play et mange, puis appuie sur Check.

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)];
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

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