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: 3 после третьей еды.

Нажми Play и съешь еду, затем нажми Check.

Попробуйте сами

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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Игра на Unity: 3D-змейка