Unity3D Yükleme Ekranı Oluşturma, Make a Loading Bar Screen


Unity' de sahneler arası geçişte kullanabileceğimiz ve oyuncumuzun programın ne yaptığını bilip, donmadığını teyit etmesi veya beklerken sıkılmaması için örneğin bir seviyeden başka bir seviyeye geçerken gösterdiğimiz bir ekrandır.

Neler Kullanılacak

  • Temel olarak diğer sahneye geçmek için bir koşul veya buton lazım, ben nasıl yapılacağını göstereceğim için bir buton kullanıyorum.
  • Yükleme ekranımızı üstüne tasarlamak için bir adet panel nam-ı diğer 'TheLoadingPanel',
  • Yükleme çubuğu olacak bir slider nam-ı diğer 'LoadingBar',
  • İsteğe bağlı olarak panelin üst kısmında gözükecek bir adet text nam-ı diğer 'LoadingText',
  • Yine isteğe bağlı olarak yükleme çubuğunun yüzde kaç dolduğunu yazdıracağımız bir adet text nam-ı diğer 'LoadingProgress',
  • Kodları devralacak bir gameobject ben ismini '_GameManager' koydum,
  • Ve tabi ki ikinci bir sahne.

Yapılışı

  • Hierarchy penceresinde _GameManager'i oluşturun.
  • Daha sonra button ve paneli oluşturun.
  • Daha sonra panelin içerisine slider ve text bileşenlerini yaratın.
  • Paneli inspector penceresinden deaktif hale getirin.

  • LoadingBar içindeki "Handle Slide Area" bileşenini silin çünkü bu slider kendi başına dolacak.
  • LoadingText yazısının içeriğini 'Yükleniyor...' olarak belirleyin. Ve LoadingBar'ın yukarısında veya aşağında yerleştirin.
  • LoadingProgress'i ise LoadingBar içerisine ortalayabilirsiniz ya da sağa ya da sola dayalı olarak kullanabilirsiniz. Bunun içindeyse '0%' gibi yüklemenin ilerleyeşi gösterilecek.
  • TheLoadingPanel' i aşağıdaki gibi tasarlayabilirsiniz.
theLoadingPanel

Kodlama Kısmı

Kodları devralması için '_GameManager' adlı boş bir GameObject yaratmıştık. 
  • '_GameManager' üstüne tıklayın ve Inspector penceresindeki Add Component butonuna tıklayın.
  • Açılan küçük pencerenin altındaki New Script butonuna tıklayıp, kod parçasına bir isim verin ve onu yaratın. Ben 'GameManager' adını layık gördüm.
  • Oluşturduktan sonra kodu açın ve aşağıdaki kodları içine yapıştırın:
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
 public GameObject theLoadingPanel; //Panelimiz
 public Slider loadingBar; //Yükleme çubuğumuz
 public Text loadingProgress; //Yükleme çubuğumuzun ilerleyişi
 AsyncOperation operation; //Sahneyi asenkron olarak yükleyecek zımbırtı

 public void SahneYukle(int sahneIndex)
 {
  operation = SceneManager.LoadSceneAsync(sahneIndex);
  StartCoroutine(YuklemeEkrani(1));
 }
    
 IEnumerator YuklemeEkrani(int index)
 {
  theLoadingPanel.SetActive(true);
  while (!operation.isDone)
  {
   int progress = Mathf.CeilToInt(operation.progress * 100f);
   loadingBar.value = progress / 100f;
   loadingProgress.text = progress+ "%";
   yield return null;
  }
 }
}

  • Daha sonra Button'un üstüne tıklayın ve Inspector penceresinde On Click() içine _GameManager'i sürükleyin ve fonksiyon olarak 'SahneYükle (int)' i seçin ve yazı kutusunun içine 1 yazın.