В этой статье мы рассмотрим создание пользовательского интерфейса с помощью Unity UI или uGUI. Чтобы показать, как его использовать, мы создадим элемент Text, который будет отслеживать счет игрока, и элемент Image, который будет отслеживать жизни игрока.

Первое, что нам нужно, это Canvas. Canvas — это то, что накладывается на камеру, и для рендеринга все элементы пользовательского интерфейса должны быть дочерними элементами Canvas. При создании элемента пользовательского интерфейса он автоматически генерирует Canvas, если его еще нет.

Создайте текстовый элемент и назовите его «Score Text». Затем настройте параметры, пока текст партитуры не будет выглядеть так, как вы хотите, и там, где вы хотите, на холсте.

Обратите внимание, что когда Unity создала Canvas, она также создала EventSystem; это то, что элементы пользовательского интерфейса используют для отправки сообщений, таких как нажатия кнопок пользовательского интерфейса и когда курсор входит или выходит из элемента пользовательского интерфейса.

Далее нам нужно создать скрипт для управления пользовательским интерфейсом, назвать его «UIManager» и прикрепить к Canvas.

В верхней части скрипта UIManager добавьте «using UnityEngine, UI». Это называется добавлением пространства имен и позволяет нам использовать классы в этом пространстве имен. В данном случае это классы пользовательского интерфейса, такие как изображение и текст.

Затем создайте частную переменную Type Text с именем «_scoreText» с нулевым значением. Затем создайте общедоступный метод для изменения _scoreText с именем «UpdateScore» и заставьте его принимать значение int. Внутри метода установите для свойства text _scoreText значение «Score:», а в конце добавьте счет int.

В скрипте Player создайте приватный int для счета со значением 0. Затем создайте приватный UIManager со значением null; это будет содержать ссылку на UIManager на холсте.

Затем в меню «Пуск» извлеките ссылку на UIManager с помощью GameObject.Find, найдите Canvas и получите компонент сценария UIManager. Затем проверьте значение null и вызовите метод UpdateScore для UIManager, передавая переменную score игрока.

Когда вы войдете в игровой режим сейчас, игра установит текущий счет игрока, равный 0.

Вернувшись в скрипт Player, создайте общедоступный метод с именем «AddScore», это будет то, что увеличивает счет Player и обновляет пользовательский интерфейс. Внутри метода добавьте 10 к _score, а затем вызовите UpdateScore для _uIManager, передав _score.

Затем в сценарии Enemy создайте закрытую переменную типа Player с именем «_player», чтобы хранить ссылку на Player. Затем в Start извлеките ссылку на Player с помощью GameObject.Find и получите компонент скрипта Player.

В OnTriggerEnter2D удалите локальную переменную player и замените ее на _player. Затем добавьте нулевую проверку для _player в операторе Laser tag if, а если не нулевое, вызовите метод AddScore для _player.

Теперь убийство врагов лазером даст игроку 10 очков и обновит пользовательский интерфейс.

В Unity создайте элемент Image UI, назовите его «Lives Image», это будет то, что показывает текущие жизни Player. Добавьте спрайт no_lives в слот исходного изображения, затем нажмите «Установить собственный размер», что изменит размер элемента изображения в соответствии с размером спрайта в пикселях.

Отрегулируйте его оттуда, пока он не будет выглядеть так, как вы хотите.

В сценарии UIManager создайте частную переменную Type Image с именем «_livesImage» с нулевым значением; это будет содержать ссылку на элемент пользовательского интерфейса, а затем добавить частный массив Type Sprite с именем «_liveSprites» с нулевым значением. Наконец, создайте общедоступный метод с именем «UpdateLivesImage» и задайте ему значение int. Внутри метода спрайт _livesImage должен быть равен элементу массива _liveSprites, который имеет тот же номер индекса, что и жизни игрока.

В сценарии Player внутри Start после вызова метода UpdateScore для _uIManager вызовите UpdatLivesImage для _uIManager и передайте _lives.

Затем в методе ChangeLives, после добавления суммы к _lives, вызовите UpdateLivesImage для _uIManager, передавая _lives.

Теперь в Unity нам нужно подключить элемент пользовательского интерфейса и живые спрайты к Canvas. Перетащите изображение жизней в поле «Изображение жизней», затем увеличьте размер массива живых спрайтов до 4 и перетащите спрайт в соответствующие поля, без жизней до 0, одной жизни до 1, двух жизней до 2 и трех жизней до 3.

Теперь вы можете войти в игровой режим и увидеть жизни игроков, представленные в игре.

В следующей статье мы рассмотрим создание поведения Game Over, когда игрок умирает.