Больше защиты? Тогда ладно!

У нас уже есть механика защиты от врагов с одного удара. Давайте немного подправим это, увеличив количество щитов до трех.

I. Настройка скрипта Player.cs

I.1 - Переменные
Прежде всего, нам нужно добавить переменную для хранения текущего количества имеющихся у нас щитов. Назовем его просто _shieldCounter.

I.2 Метод Damage ()
Когда мы получаем удар и щит активен, мы не хотим отключать бул щит каждый раз. Во-первых, мы хотим уменьшить переменную _shieldCounter на 1 и отключать состояние щита, только если _shieldCounter достигает 0.

I.3 Метод ActivateShield ()
Поскольку у нас есть переменная _shieldCounter, хранящая текущее количество щитов, имеющихся у игрока, мы не должны забывать правильно реализовать ее в скрипте.

  • Каждый раз, когда мы собираем усиление щита, мы увеличиваем счетчик _shieldCounter.
  • Однако, когда мы достигли максимального значения (в данном случае трех), мы не хотим увеличивать счетчик, а, скорее, оставляем его на максимальном значении.

I.4 Создание нового метода GetCurrentShieldCount ()
Поскольку мы добавили элементы пользовательского интерфейса для щитов, нам нужен метод для возврата текущего количества щитов, которые мы должны должным образом обновить On- Экранный интерфейс.

II. Настройка скрипта UIManager.cs

II.1 Переменные
Здесь нам понадобятся два GameObject типа Text. Один для отображения текущего количества щитов, который у нас есть, а другой - для максимально допустимого количества щитов.

II.2 Назначение текстовых элементов
Просто скажите Unity найти два GameObject и захватить их текстовый компонент.

II.3 Настройка логики пользовательского интерфейса
Чтобы показать текущее количество щитов, нам просто нужно получить доступ к методу, который мы создали ранее в скрипте Player.cs . А пока мы можем набрать текст максимальной суммы.

II.4 Подробности
Это делается довольно быстро.

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

Поскольку мы вызываем методы в необходимых местах, нам просто нужно добавить сюда GameObjects.

А вот как выглядит готовая реализация: