Цель: создать полосу здоровья с помощью ползунка Unity. Слайд должен содержать текст, отражающий состояние здоровья игрока.

Настройка сцены

У меня есть холст в иерархии с пустым объектом под названием Health Bar Menu. Этот пустой объект содержит объекты фона, заголовка и слайдера.

Настройки слайдера

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

Затем я настроил цвет заливки на зеленый и изменил прямоугольное преобразование области заливки на 0.

Я изменил фон на красный и установил максимальное значение ползунка на 100.

UI-менеджер (скрипт слайдера)

Скрипт слайдера будет ссылаться как на слайдер, так и на текст (HP). При нажатии Q или R это увеличит/уменьшит здоровье игрока с шагом 20.

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class HealBar : MonoBehaviour
{
    [SerializeField] private Slider _slider;
    [SerializeField] private TMP_Text _hpNumberText;
    private float _health = 100;
    // Start is called before the first frame update
    void Start()
    {
        _slider.value = _health;
        _hpNumberText.text = _health.ToString();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.Q))
        {
            if (_health > 0)
            {
                _health -= 20f;
                _slider.value = _health;
                _hpNumberText.text = _health.ToString();
            }
        }
        if (Input.GetKeyUp(KeyCode.E))
        {
            if (_health <= 99)
            {
                _health += 20f;
                _slider.value = _health;
                _hpNumberText.text = _health.ToString();
            }
        }
    }
}