Crear una barra de progreso radial/circular en Unity

En este tutorial, mostraré cómo hacer una barra de progreso circular/radial (que también puede usarse como barra de HP, etc.) en Unity.

Sharp Coder Reproductor de video

¡Vamos a empezar!

Pasos

Necesitaremos una imagen circular con un fondo transparente.

  • Importe la imagen a su proyecto y cambie su tipo de textura a "Sprite (2D and UI)"

  • Crea un nuevo lienzo (GameObject -> UI -> Canvas)
  • Haga clic derecho en el objeto Canvas -> UI -> Imagen
  • Asigne un objeto circular a la imagen de origen y cambie su color a rojo
  • Cambie el tipo de imagen a "Filled" y el método de relleno a "Radial 360" (esto mostrará otra variable llamada Cantidad de relleno que controla qué parte de la imagen es visible a lo largo del círculo)

  • Duplica la imagen, cambia su color a blanco y el tipo de imagen a "Simple"
  • Mueve la imagen duplicada dentro de la primera imagen.
  • Cambie el tamaño de la primera imagen (la que tiene el tipo Imagen rellena) a algo más grande (por ejemplo, ancho: 135 alto: 135)

  • Crear nuevo texto (haga clic derecho en Lienzo -> UI -> Texto)
  • Cambiar su alineación al centro-medio.

  • Cambie la altura del texto a 60 para poder ajustarse al texto de carga

Por último, crearemos un script que aplicará el valor de progreso a la Imagen.

  • Crea un nuevo script, llámalo "SC_CircularLoading" y pega el siguiente código dentro de él:

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.";
        }
    }
}
  • Adjunte el script SC_CircularLoading a cualquier objeto y asigne sus variables (Loading Image debe ser la imagen con tipo de relleno radial y Loading Text debe ser un texto que mostrará el valor de progreso)

  • Presione Reproducir y mueva el control deslizante Progreso de carga. Observe cómo la imagen de carga se llena gradualmente:

Artículos sugeridos
Trabajar con el sistema UI de Unity
Creando una pantalla de carga en Unity
Crear una interfaz de usuario de pantalla ganadora en Unity
Interfaz de usuario de HP/Progress/Stamina Bar - Revisión del paquete Unity Asset Store
Crear un menú de pausa en Unity
Crear un efecto de filtro de cinta VHS en Unity
Cómo crear un juego de terror en Unity