Счёт
Урок 11 из 14 курса Игра на Unity: 3D-змейка на Coddy.
Счёт увеличивается в GameManager, но его никто не видит. Текст TextMeshPro в левом верхнем углу показывает счёт: поле TMP_Text, заданное в Inspector, и его text, которому присваивается значение из кода.
Записывай текст там же, где меняется число, после изменения. Тогда экран никогда не будет отставать от счёта. Магазин обновляет количество монет таким же образом:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}Также задай текст один раз в Start(), чтобы в первом кадре отображался настоящий счёт, независимо от текста, указанного в сцене.
Задание
СреднеПоказывай счёт на экране.
- В
GameManagerдобавьusing TMPro;иpublic TMP_Text scoreText;(сцена связывает ScoreText). - В
Start()покажиScore: 0. - В
Eat()после начисления очка покажи"Score: " + score.
Нажми «Играть» и ешь: в левом верхнем углу счёт увеличивается: Score: 1, Score: 2. Затем нажми «Проверить».
Попробуйте сами
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)];
}
}
Все уроки раздела Игра на Unity: 3D-змейка
Потренируйтесь самостоятельно: Песочница Unity