В этом уроке мы научимся выводить текст в игре, например, счёт собранных кубиков или сообщение о выигрыше.
Создание текстового поля
Создадим текстовое поле. Нажимаем 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 отобразится сообщение «Вы выиграли!».
Мы создали и настроили текстовые поля для отображения счёта и сообщения о выигрыше в игре. Теперь игрок видит свой прогресс и результат.