Opret en radial/cirkulær statuslinje i Unity

I denne tutorial vil jeg vise, hvordan man laver en cirkulær/radial statuslinje (som også kan bruges som en HP-bjælke osv.) i Unity.

Sharp Coder Videoafspiller

Så lad os begynde!

Trin

Vi skal bruge et cirkulært billede med en gennemsigtig baggrund.

  • Importer billedet til dit projekt og skift dets teksturtype til "Sprite (2D and UI)"

  • Opret et nyt lærred (GameObject -> UI -> Canvas)
  • Højreklik på Canvas-objektet -> UI -> Billede
  • Tildel en cirkelsprite til kildebilledet, og skift dens farve til rød
  • Skift billedtypen til "Filled" og udfyldningsmetoden til "Radial 360" (dette vil vise en anden variabel kaldet udfyldningsmængde, som styrer, hvor meget af billedet der er synligt langs cirklen)

  • Dupliker billedet, skift dets farve til hvid, og billedtype til "Simple"
  • Flyt det duplikerede billede ind i det første billede
  • Skift den første billedstørrelse (den med typen Fyldt billede) til noget større (f.eks. bredde: 135 højde: 135)

  • Opret ny tekst (højreklik på lærred -> UI -> tekst)
  • Skift dens justering til midten-center

  • Skift teksthøjden til 60 for at kunne passe til indlæsningsteksten

Til sidst vil vi oprette et script, der vil anvende statusværdien på billedet

  • Opret et nyt script, kald det "SC_CircularLoading" og indsæt koden nedenfor i det:

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.";
        }
    }
}
  • Vedhæft SC_CircularLoading-scriptet til ethvert objekt og tildel dets variabler (Loading Image skal være billedet med Radial Fill-type, og Loading Text skal være en tekst, der viser statusværdien)

  • Tryk på Play og flyt skyderen Loading Progress. Bemærk, at indlæsningsbilledet udfyldes gradvist: