Цель: легко создать красивый пользовательский интерфейс в вашей игре.

Есть несколько различных элементов пользовательского интерфейса, которые вы можете реализовать в своей игре, например (Используйте варианты TextMesh Pro вместо обычного текста):

  • Текстовая сетка Pro
  • Изображение
  • Кнопка (TextMesh Pro)
  • Слайдер
  • Полоса прокрутки
  • Выпадающий список (TextMesh Pro)
  • Поле ввода (TextMesh Pro)
  • Панель
  • и более…

Здесь мы рассмотрим, как реализовать работающую систему оценки с помощью TextMesh Pro. Сначала щелкните правой кнопкой мыши иерархию и выберите UITextMesh Pro. Это создаст объект Canvas с объектом TextMesh Pro (TMP) внутри. Появится объект системы событий, который используется для кнопок, ползунков и другого интерактивного пользовательского интерфейса.

Переименуйте объект в Score_text, и мы изменим предварительный просмотр текста, чтобы он говорил «Оценка: 70» в текстовом вводе. Измените размер шрифта на 20.

Полностью уменьшите масштаб в представлении «Сцена», пока не увидите все границы холста. Отрегулируйте размер объекта TMP и измените точку привязки так, чтобы она находилась в правом верхнем углу. Это гарантирует, что текст останется закрепленным в правом верхнем углу экрана. Измените для него позиции x и y следующим образом.

Мы также хотим масштабировать весь пользовательский интерфейс, который будет находиться на холсте, для разных размеров экрана. Перейдите на холст и в разделе Canvas Scaler измените режим масштабирования пользовательского интерфейса на Масштабировать с размером экрана. Также создайте скрипт с именем UIManager и прикрепите его к Canvas.

Теперь мы хотим, чтобы к нашему счету добавлялось 10 очков каждый раз, когда мы стреляем по врагу. Убедитесь, что ваш скрипт UIManager использует UnityEngine.UI и TMPro. Начните с написания следующего в сценарии UIManager:

Приведенный выше код создает поле для вставки текста TMP. В начале мы устанавливаем пользовательский интерфейс для оценки «Оценка: 0». Затем мы создаем метод с именем UpdateScore, который принимает счет игрока и устанавливает пользовательский интерфейс счета таким образом, чтобы он отображал текущий счет.

Обязательно перетащите объект TMP в компонент UIManager на холсте (в инспекторе).

Затем мы переходим к нашему классу Player и создаем 2 закрытые переменные с именами _score и _uiManager, которые хранят текущий счет и экземпляр скрипта UIManager соответственно.

В меню «Пуск» мы используем GetComponent один раз, потому что это затратная операция. Мы устанавливаем _uiManager для сценария UIManager на холсте. В качестве хорошей практики мы проверяем его на ноль, и если скрипта нет, мы отображаем сообщение об ошибке.

Создайте новый метод с именем AddToScore, который принимает вход с именем points. Мы устанавливаем для переменной _score значение points, а затем запускаем метод UpdateScore из нашего UIManager и передаем новую оценку с _score.

Наконец, перейдите к классу Enemy и в начале мы устанавливаем компонент Player на конкретный экземпляр компонента player на проигрывателе. Затем мы вызываем только что созданный метод AddToScore из нашего класса Player в методе OnTriggerEnter2D, когда другим сталкивающимся объектом является лазер.

Теперь наш счет полностью функционирует!