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
Moyen- Dans
GameManager, ajouteusing TMPro;etpublic TMP_Text scoreText;. Dans la scène, associe-le à ScoreText, en haut à gauche. - Dans
Start(), afficheScore: 0. - Dans
Eat(), affiche le nouveau score, par exempleScore: 3aprè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)];
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.