Unity 3D: Текст в игре — вывод очков и сообщений

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

Создание текстового поля

Создадим текстовое поле. Нажимаем Create > UI > Text. Добавляются объекты Canvas и Text. Без них текст не будет отображаться. По умолчанию объект Text очень большой и не виден в сцене, так как не подстраивается под камеру. В режиме Game он отображается корректно. По умолчанию текст центрирован, поскольку точка Pivot Point расположена в центре.

Чтобы изменить положение Pivot Point, удерживаем Shift и Alt, кликаем в верхний левый угол. Надпись переместится. Для дополнительного сдвига зададим координаты X = 10, Y = -10. Переименуем объект Text в CountText. Содержание этого текстового поля будем изменять с помощью скрипта.

Изменение текста с помощью скрипта

Перейдём к скрипту PlayerControl. Для работы с текстовыми полями подключим библиотеку using UnityEngine.UI;.

using UnityEngine.UI; // Добавляем библиотеку для UI

public class PlayerControl : MonoBehaviour
{
    public Text CountText; // Подключаем текстовое поле
    private int count; // Переменная для счёта кубиков

    void Start()
    {
        count = 0; // Изначально счёт равен 0
        SetCountText(); // Выводим начальное значение
    }

    void SetCountText()
    {
        CountText.text = "Счёт: " + count.ToString(); // Обновляем текст в UI
    }

    void OnTriggerEnter(Collider other)
    {
        Destroy(other.gameObject); // Уничтожаем кубик
        count++; // Увеличиваем счётчик
        SetCountText(); // Обновляем текст
    }
}

В инспекторе PlayerControl перетащим объект CountText в поле CountText. Теперь скрипт имеет ссылку на текстовое поле.

Функция SetCountText() принимает значение count (тип int), преобразует его в строку (ToString()) и выводит в текстовое поле. В Start() устанавливаем начальное значение count = 0 и вызываем SetCountText().

Вывод сообщения о выигрыше

Создадим объект Text – WinText – для сообщения о выигрыше. Изменим его размер шрифта до 25 пикселей и расположение по центру. В скрипт добавим:

using UnityEngine.UI;

public class PlayerControl : MonoBehaviour
{
    // ... (предыдущий код) ...
    public Text WinText; // Переменная для текстового поля WinText

    void Start()
    {
        count = 0;
        SetCountText();
        WinText.text = ""; // Изначально текст пустой
    }

    void SetCountText()
    {
        CountText.text = "Счёт: " + count;
        if (count >= 9)
        {
            WinText.text = "Вы выиграли!";
        }
    }

    // ... (предыдущий код) ...
}

В инспекторе создадим ссылку на WinText. Теперь, когда count достигнет или превысит 9, в WinText отобразится сообщение «Вы выиграли!».

Мы создали и настроили текстовые поля для отображения счёта и сообщения о выигрыше в игре. Теперь игрок видит свой прогресс и результат.

Что будем искать? Например,программа