Цель: легко создать красивый пользовательский интерфейс в вашей игре.
Есть несколько различных элементов пользовательского интерфейса, которые вы можете реализовать в своей игре, например (Используйте варианты TextMesh Pro вместо обычного текста):
- Текстовая сетка Pro
- Изображение
- Кнопка (TextMesh Pro)
- Слайдер
- Полоса прокрутки
- Выпадающий список (TextMesh Pro)
- Поле ввода (TextMesh Pro)
- Панель
- и более…
Здесь мы рассмотрим, как реализовать работающую систему оценки с помощью TextMesh Pro. Сначала щелкните правой кнопкой мыши иерархию и выберите UI › TextMesh 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, когда другим сталкивающимся объектом является лазер.
Теперь наш счет полностью функционирует!