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