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.
Défi
MoyenAffiche le score à l’écran.
- Dans
GameManager, ajouteusing TMPro;etpublic TMP_Text scoreText;(la scène relie ScoreText). - Dans
Start(), afficheScore: 0. - 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