Если вы когда-нибудь задумывались, как в играх полоски здоровья меняют цвет с зеленого на красный или меняют цвет по мере истощения здоровья, то вы похожи на меня. Итак, я научился это делать. Вот моя история.

Цель: заставить полосу здоровья менять цвет в зависимости от количества нанесенного урона.

Во-первых, вам нужен холст. Теперь я собираюсь показать вам систему здоровья моего врага, потому что система для игрока такая же, только на большом пользовательском интерфейсе для экрана. В то время как метод врагов покажет вам, как индивидуализировать полоски здоровья над их головами. В любом случае, вы должны изменить размер этого холста и сделать его немного больше, чем персонаж, к которому вы его прикрепляете, и сделать его дочерним объектом этого игрока.

Затем вы добавляете ползунок на холст. Так будет двигаться и истощаться полоса здоровья.

Вам также понадобятся 2 изображения. Ну, одно изображение, но 2, если вы хотите рамку. Один будет для заливки изображения слайдера. Затем, если вы хотите немного добавить изюминку, вы можете добавить рамку изображения, как здесь, или любое другое изображение, которое вы хотите, и просто изменить его размер, чтобы он соответствовал вашему желанию. Вы также можете настроить размер ползунка, чтобы он соответствовал тому, что у вас происходит. Это очень просто и не слишком художественно. Как я уже говорил, я не художник. На данный момент я стремился к функциональности.

Установите цвета, которые вы хотите для каждой части, используя цветовое окно изображения в инспекторе.

Теперь у вас должно быть 3 или 4 элемента для вашей шкалы здоровья.

  1. Холст
  2. Ползунок, который является дочерним элементом маленького холста или основного холста.
  3. Изображение заливки, которое будет дочерним элементом вашего слайдера.
  4. Необязательное изображение рамки вашего изображения-заполнителя, которое является дочерним элементом вашего изображения-заполнения.

Теперь вам нужен сценарий. Я прикрепил свой к слайдеру. При создании скрипта, использующего элементы пользовательского интерфейса, не забудьте добавить вверху using UnityEngine.UI. В противном случае он не распознает какие-либо компоненты пользовательского интерфейса.

Тогда вам понадобятся 3 компонента. У вас должен быть доступ к вашему ползунку, заливке, которая представляет ваш ползунок в виде созданного вами изображения, и градиенту, с помощью которого вы будете изменять цвет в зависимости от значений.

Затем вам нужно создать 2 разных метода. Первый метод заключается в объявлении значений и того, как значения и градиенты рассчитываются по этим значениям. Эти методы — то, что вы будете использовать, чтобы настроить их в соответствии со здоровьем персонажа.

Поэтому вам нужно установить максимальное значение вашего ползунка, которое будет максимальным здоровьем персонажа. Вы также объявляете значение ползунка равным = здоровью персонажа. Затем установите значение цвета заливки равным оценке цвета градиента с течением времени. Функция gradient.Evaluate() используется для вычисления значения градиента в любой момент времени. В данном случае я использовал 1f, потому что хочу, чтобы он был точным и быстро настраивался.

Этот метод установит все значения в соответствии с максимальным здоровьем игрока. Теперь, чтобы изменить эти значения в соответствии со значениями здоровья по мере их истощения или изменения, установите значение ползунка = здоровью. Затем настройте заливку и градиент в соответствии с текущим состоянием здоровья игрока. Значения рассчитываются и нормализуются таким образом, что независимо от максимального значения здоровья оно работает одинаково между максимальным значением и 0. Нормализация устанавливает диапазон значений от 0 до 1, даже если значения не равны 0–1.

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

Если вы хотите, чтобы он всегда был обращен к камере, даже когда персонаж не смотрит на вас, вы можете поместить на холст рекламный щит или скрипт просмотра. Это сделает так, чтобы он всегда смотрел на камеру, получая камеру и вращая объект холста, чтобы посмотреть на его положение. Таким образом, вы всегда сможете увидеть полоски здоровья.

После этого вам нужно сделать свой собственный сценарий здоровья и привязать его к нему. Вы делаете это, получая сценарий. Затем установите компоненты здоровья скрипта на значения вашего персонажа в нужное время.

Это должно быть так. Надеемся, вам понравится.