Creați o bară de progres radială/circulară în Unity

În acest tutorial, voi arăta cum să faci o bară de progres circulară/radială (care poate fi folosită și ca bară HP, etc.) în Unity.

Sharp Coder Video player

Deci, să începem!

Pași

Vom avea nevoie de o image circulară cu un fundal transparent.

  • Importați imaginea în proiectul dvs. și schimbați-i tipul de textură la "Sprite (2D and UI)"

  • Creați o pânză nouă (GameObject -> UI -> Canvas)
  • Faceți clic dreapta pe obiectul Canvas -> UI -> Image
  • Atribuiți un sprite cerc imaginii sursă și schimbați-i culoarea în roșu
  • Schimbați tipul de imagine la "Filled" și metoda de umplere la "Radial 360" (Acest lucru va afișa o altă variabilă numită Fill Amount, care controlează cât de mult din imagine este vizibilă de-a lungul cercului)

  • Duplicați imaginea, schimbați-i culoarea în alb și Tipul imaginii în "Simple"
  • Mutați imaginea duplicată în interiorul primei imagini
  • Schimbați prima dimensiune a imaginii (cea cu tipul Imagine completată) la ceva mai mare (ex. lățime: 135 înălțime: 135)

  • Creați text nou (clic dreapta pe Canvas -> UI -> Text)
  • Schimbați-i alinierea la mijloc-centru

  • Schimbați înălțimea textului la 60 pentru a se potrivi cu textul de încărcare

În cele din urmă, vom crea un script care va aplica valoarea de progres imaginii

  • Creați un nou script, numiți-l "SC_CircularLoading" și inserați codul de mai jos în el:

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.";
        }
    }
}
  • Atașați scriptul SC_CircularLoading oricărui obiect și atribuiți variabilele acestuia (Imaginea de încărcare ar trebui să fie imaginea cu tipul de umplere radială și Textul de încărcare ar trebui să fie un text care va afișa valoarea progresului)

  • Apăsați Play și mutați glisorul Loading Progress. Observați imaginea de încărcare care se umple treptat:

Articole sugerate
Lucrul cu sistemul UI al Unity
Crearea unui ecran de încărcare în Unity
HP/Progress/Stamina Bar UI - Revizuirea pachetului Unity Asset Store
Crearea unui umbritor de iarbă simplu în Unity
Crearea unei interfețe de utilizare Winner Screen în Unity
Crearea unui meniu de pauză în Unity
Crearea simulatoarelor de zbor în Unity