Создайте радиальный/круговой индикатор выполнения в Unity

В этом уроке я покажу, как сделать круговой/радиальный индикатор выполнения (который также можно использовать как индикатор здоровья и т. д.) в Unity.

Sharp Coder Видео проигрыватель

Итак, начнем!

Шаги

Нам понадобится круглое изображение с прозрачным фоном.

  • Импортируйте изображение в свой проект и измените его тип текстуры на "Sprite (2D and UI)"

  • Создайте новый холст (GameObject -> UI -> Canvas).
  • Щелкните правой кнопкой мыши объект Canvas -> Пользовательский интерфейс -> Изображение.
  • Назначьте спрайт круга исходному изображению и измените его цвет на красный.
  • Измените тип изображения на "Filled" и метод заливки на "Radial 360" (при этом появится еще одна переменная, называемая «Объем заливки», которая контролирует, какая часть изображения видна вдоль круга)

  • Дублируйте изображение, измените его цвет на белый и тип изображения на "Simple"
  • Переместите дублированное изображение внутрь первого изображения.
  • Измените размер первого изображения (тот, который имеет тип «Заполненное изображение») на более крупный (например, ширина: 135, высота: 135).

  • Создайте новый текст (щелкните правой кнопкой мыши по холсту -> Пользовательский интерфейс -> Текст)
  • Измените его выравнивание на середину-центр.

  • Измените высоту текста на 60, чтобы он соответствовал загружаемому тексту.

Наконец, мы создадим скрипт, который будет применять значение прогресса к изображению.

  • Создайте новый скрипт, назовите его "SC_CircularLoading" и вставьте в него приведенный ниже код:

SC_CircularLoading.cs

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

public class SC_CircularLoading : MonoBehaviour
{
    public Image loadingImage;
    public Text loadingText;
    [Range(0, 1)]
    public float loadingProgress = 0;

    // Update is called once per frame
    void Update()
    {
        loadingImage.fillAmount = loadingProgress;
        if(loadingProgress < 1)
        {
            loadingText.text = Mathf.RoundToInt(loadingProgress * 100) + "%\nLoading...";
        }
        else
        {
            loadingText.text = "Done.";
        }
    }
}
  • Прикрепите скрипт SC_CircularLoading к любому объекту и назначьте его переменные (изображение загрузки должно быть изображением с типом радиальной заливки, а текст загрузки должен быть текстом, который будет отображать значение прогресса)

  • Нажмите Play и переместите ползунок «Прогресс загрузки». Наблюдайте за тем, как загрузочное изображение постепенно заполняется:

Рекомендуемые статьи
Работа с системой пользовательского интерфейса Unity
Пользовательский интерфейс HP/Progress/Stamina Bar — обзор пакета Unity Asset Store
Создайте эффект пены для мытья под давлением в Unity
Создание простого шейдера травы в Unity
Создание пользовательского интерфейса экрана победителя в Unity
Создание меню паузы в Unity
Создание авиасимуляторов в Unity