צור סרגל התקדמות רדיאלי/מעגלי ב-Unity

במדריך זה, אני אראה כיצד ליצור סרגל התקדמות עגול/רדיאלי (שיכול לשמש גם כפס HP וכו') ב-Unity.

Sharp Coder נגן וידאו

אז בואו נתחיל!

שלבים

נצטרך תמונה עגולה תמונה עם רקע שקוף.

  • ייבא את התמונה לפרויקט שלך ושנה את סוג הטקסטורה שלה ל "Sprite (2D and UI)"

  • צור קנבס חדש (GameObject -> ממשק משתמש -> קנבס)
  • לחץ לחיצה ימנית על אובייקט ה-Canvas -> ממשק משתמש -> תמונה
  • הקצה ספרייט עיגול לתמונת המקור ושנו את צבעו לאדום
  • שנה את סוג התמונה ל-"Filled" ואת שיטת המילוי ל-"Radial 360" (זה יציג משתנה נוסף בשם Fill Amount השולט כמה מהתמונה נראה לאורך המעגל)

  • שכפל את התמונה, שנה את הצבע שלה ללבן ואת סוג התמונה ל "Simple"
  • הזז את התמונה המשוכפלת לתוך התמונה הראשונה
  • שנה את גודל התמונה הראשונה (זה עם סוג תמונה מלאה) למשהו גדול יותר (לדוגמה, רוחב: 135 גובה: 135)

  • צור טקסט חדש (קליק ימני על קנבס -> ממשק משתמש -> טקסט)
  • שנה את היישור שלו למרכז-אמצע

  • שנה את גובה הטקסט ל-60 כדי להתאים לטקסט הטעינה

לבסוף, ניצור סקריפט שיחיל את ערך ההתקדמות על התמונה

  • צור סקריפט חדש, קרא לו "SC_CircularLoading" והדבק בתוכו את הקוד למטה:

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.";
        }
    }
}
  • צרף את הסקריפט SC_CircularLoading לכל אובייקט והקצה את המשתנים שלו (Loading Image צריך להיות התמונה עם סוג מילוי רדיאלי ו-Loading Text צריך להיות טקסט שיציג את ערך ההתקדמות)

  • הקש על Play והזז את המחוון Loading Progress. ראה את תמונת הטעינה מילוי בהדרגה: