유니티 로딩 씬 코르틴으로 작성

유니티(Unity)에서 로딩 화면을 구성하는 가장 일반적인 방법은 씬 관리자(SceneManager)를 이용한 비동기 로딩입니다. 이 방법은 다음 씬을 백그라운드에서 미리 불러오면서 로딩 진행률을 실시간으로 표시할 수 있어 사용자 경험을 크게 향상시킵니다.

로딩 씬 스크립트 코드

다음은 로딩 씬에서 사용할 수 있는 LoadingManager.cs 스크립트 코드입니다. 이 스크립트는 LoadSceneAsync를 사용하여 다른 씬을 비동기적으로 로드하고, 로딩 바 UI에 진행률을 업데이트합니다.

C#

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI; // UI 요소를 사용하기 위해 필요합니다.

public class LoadingManager : MonoBehaviour
{
    // 로딩 진행률을 보여줄 슬라이더 UI
    public Slider progressBar;

    // 로드할 다음 씬의 이름
    public string nextSceneName = "GameScene";

    void Start()
    {
        // 로딩 코루틴을 시작합니다.
        StartCoroutine(LoadAsyncScene());
    }

    IEnumerator LoadAsyncScene()
    {
        // 다음 씬을 비동기적으로 로드합니다.
        AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(nextSceneName);

        // 로딩이 완료될 때까지 기다리지 않습니다.
        asyncLoad.allowSceneActivation = false;

        // 로딩이 완료될 때까지 반복합니다.
        while (!asyncLoad.isDone)
        {
            // 로딩 진행률을 가져와 로딩 바에 표시합니다.
            // progress 값은 0.9에서 멈추므로, 별도의 처리를 합니다.
            float progress = Mathf.Clamp01(asyncLoad.progress / 0.9f);
            progressBar.value = progress;

            // 로딩이 90% 완료되면 (progress가 0.9에 도달하면)
            if (asyncLoad.progress >= 0.9f)
            {
                // 로딩 바를 100%로 채웁니다.
                progressBar.value = 1f;

                // 다음 씬으로 넘어갈 준비가 완료되었음을 알립니다.
                // 이 부분에서 "아무 키나 누르세요"와 같은 메시지를 추가할 수 있습니다.
                // 여기서는 바로 다음 씬으로 넘어갑니다.
                asyncLoad.allowSceneActivation = true;
            }

            // 다음 프레임까지 기다립니다.
            yield return null;
        }
    }
}

스크립트 사용 방법

  1. 로딩 씬 생성: 유니티 에디터에서 새로운 씬을 만들고, LoadingScene으로 저장합니다.
  2. UI 구성: LoadingSceneCanvas를 추가하고, 그 아래 Slider (로딩 바), Image (배경), Text (로딩 메시지) 등의 UI 요소를 만듭니다.
  3. 스크립트 연결: 비어있는 게임 오브젝트를 하나 만들고, 이름을 LoadingManager로 지정합니다. 위에서 작성한 LoadingManager.cs 스크립트를 이 오브젝트에 연결합니다.
  4. 변수 설정: 인스펙터 창에서 LoadingManager 스크립트의 Progress Bar에 슬라이더 UI를 드래그하여 연결합니다. Next Scene Name 필드에 로드할 다음 씬의 이름을 정확하게 입력합니다.
  5. 빌드 설정: File > Build Settings에서 LoadingScene과 로드할 다음 씬을 추가합니다. LoadingScene이 가장 첫 번째 씬이 되도록 위로 이동시킵니다.

댓글 남기기