Utwórz promieniowy/okrągły pasek postępu w Unity

W tym samouczku pokażę, jak utworzyć okrągły/promieniowy pasek postępu (który może być również używany jako pasek HP itp.) w Unity.

Sharp Coder Odtwarzacz wideo

Więc zaczynajmy!

Kroki

Będziemy potrzebować okrągłego image z przezroczystym tłem.

  • Zaimportuj obraz do swojego projektu i zmień jego typ tekstury na "Sprite (2D and UI)"

  • Utwórz nowe płótno (GameObject -> UI -> Canvas)
  • Kliknij prawym przyciskiem myszy obiekt Canvas -> Interfejs użytkownika -> Obraz
  • Przypisz ikonkę koła do obrazu źródłowego i zmień jego kolor na czerwony
  • Zmień typ obrazu na "Filled" i metodę wypełnienia na "Radial 360" (pokaże to inną zmienną o nazwie Fill Amount, która kontroluje, jaka część obrazu jest widoczna wzdłuż okręgu)

  • Zduplikuj obraz, zmień jego kolor na biały i typ obrazu na "Simple"
  • Przesuń zduplikowany obraz wewnątrz pierwszego obrazu
  • Zmień rozmiar pierwszego obrazu (ten z typem obrazu wypełnionego) na większy (np. szerokość: 135 wysokość: 135)

  • Utwórz nowy tekst (kliknij prawym przyciskiem myszy na płótnie -> interfejs użytkownika -> tekst)
  • Zmień jego wyrównanie na środek

  • Zmień wysokość tekstu na 60, aby móc zmieścić ładowany tekst

Na koniec utworzymy skrypt, który zastosuje wartość postępu do obrazu

  • Utwórz nowy skrypt, nazwij go "SC_CircularLoading" i wklej w nim poniższy kod:

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.";
        }
    }
}
  • Dołącz skrypt SC_CircularLoading do dowolnego obiektu i przypisz jego zmienne (Loading Image powinien być obrazem typu Radial Fill, a Loading Text powinien być tekstem pokazującym wartość postępu)

  • Naciśnij Play i przesuń suwak Postęp ładowania. Obserwuj, jak ładujący się obraz stopniowo się wypełnia:

Sugerowane artykuły
Praca z systemem interfejsu użytkownika Unity
Tworzenie ekranu ładowania w Unity
Interfejs paska HP/Progress/Stamina — recenzja pakietu Unity Asset Store
Tworzenie prostego modułu cieniującego trawę w Unity
Tworzenie interfejsu użytkownika ekranu zwycięzcy w Unity
Tworzenie menu pauzy w Unity
Tworzenie efektu filtra taśmy VHS w Unity