Menu
CoddyTech

Счёт

Урок 11 из 14 курса Игра на Unity: 3D-змейка на Coddy.

Счёт увеличивается в GameManager, но его никто не видит. Текст TextMeshPro в левом верхнем углу показывает счёт: поле TMP_Text, заданное в Inspector, и его text, которому присваивается значение из кода.

Записывай текст там же, где меняется число, после изменения. Тогда экран никогда не будет отставать от счёта. Магазин обновляет количество монет таким же образом:

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

Также задай текст один раз в Start(), чтобы в первом кадре отображался настоящий счёт, независимо от текста, указанного в сцене.

challenge icon

Задание

Средне

Показывай счёт на экране.

  1. В GameManager добавь using TMPro; и public TMP_Text scoreText; (сцена связывает ScoreText).
  2. В Start() покажи Score: 0.
  3. В 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