1. 실행 이미지

 

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class UILoadingBar : MonoBehaviour
{
    [SerializeField] private TMP_Text loadingTxt;
    [SerializeField] private TMP_Text percnetText;

    [SerializeField] private Slider loadingBar;


    void Start()
    {
        loadingTxt.text = "Loading...";
        percnetText.text = "0%";
    }


   public IEnumerator DownLoadStart()
    {
        while (DownLoadManager.Instance.DownloadPercent <= 100)
        {
            percnetText.text = Convert.ToString(DownLoadManager.Instance.DownloadPercent) + "%";
            DownLoadManager.Instance.DownloadPercent++;
            loadingBar.value += 0.01f;
            yield return new WaitForSeconds(0.1f);
        }
        loadingTxt.text = "Download Complete!";
        percnetText.gameObject.SetActive(false);
       
    }

    public void DownLoadStarting()
    {
        StartCoroutine(DownLoadStart());
    }
}

2. UILoadingBar .cs

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DownLoadManager
{
    private static DownLoadManager instance;

    public int DownloadPercent = 0;

    public static DownLoadManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new DownLoadManager();
            }
            return instance;
        }
    }

    // 생성자를 private으로 만들어 외부에서 인스턴스를 생성하지 못하게 함
    private DownLoadManager() { }
}

3. DownLoadManager.cs

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIComponents : MonoBehaviour
{
    
    [SerializeField] private Button loadingStartBtn;

    [SerializeField] private UILoadingBar uiLoadingBar;



    private void Start()
    {
        this.loadingStartBtn.onClick.AddListener(() => {
            this.uiLoadingBar.DownLoadStarting();
        
        });

      

    }

}

4. UIComponents.cs

반응형

+ Recent posts