Crea una barra di avanzamento radiale/circolare in Unity

In questo tutorial, mostrerò come creare una barra di avanzamento circolare/radiale (che può anche essere utilizzata come barra HP, ecc.) in Unity.

Sharp Coder Lettore video

Allora cominciamo!

Passi

Avremo bisogno di un'immagine circolare immagine con uno sfondo trasparente.

  • Importa l'immagine nel tuo progetto e modifica il suo Tipo di trama in "Sprite (2D and UI)"

  • Crea una nuova tela (GameObject -> UI -> Canvas)
  • Fare clic con il tasto destro sull'oggetto Canvas -> UI -> Immagine
  • Assegna uno sprite circolare all'immagine sorgente e cambia il suo colore in rosso
  • Cambia il tipo di immagine in "Filled" e il metodo di riempimento in "Radial 360" (questo mostrerà un'altra variabile chiamata Quantità di riempimento che controlla quanta parte dell'immagine è visibile lungo il cerchio)

  • Duplica l'immagine, cambia il suo colore in bianco e il tipo di immagine in "Simple"
  • Sposta l'immagine duplicata all'interno della prima immagine
  • Cambia la dimensione della prima immagine (quella con il tipo Immagine riempita) in qualcosa di più grande (es. Larghezza: 135 altezza: 135)

  • Crea nuovo testo (fai clic con il pulsante destro del mouse su Canvas -> UI -> Testo)
  • Cambia il suo allineamento al centro

  • Modificare l'altezza del testo su 60 per poterlo adattare al testo in caricamento

Infine, creeremo uno script che applicherà il valore di avanzamento all'immagine

  • Crea un nuovo script, chiamalo "SC_CircularLoading" e incolla al suo interno il codice seguente:

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.";
        }
    }
}
  • Allega lo script SC_CircularLoading a qualsiasi oggetto e assegna le sue variabili (Loading Image dovrebbe essere l'immagine con tipo di riempimento radiale e Loading Text dovrebbe essere un testo che mostrerà il valore di avanzamento)

  • Premi Gioca e sposta il cursore di avanzamento del caricamento. Osservare l'immagine di caricamento riempirsi gradualmente:

Articoli suggeriti
Lavorare con il sistema di interfaccia utente di Unity
Creazione di una schermata di caricamento in Unity
Interfaccia utente HP/Progress/Stamina Bar - Recensione del pacchetto Unity Asset Store
Creazione di un'interfaccia utente della schermata vincitore in Unity
Creazione di un menu di pausa in Unity
Creazione di simulatori di volo in Unity
Creazione di un effetto filtro nastro VHS in Unity