본문 바로가기
개발/Unity·C#

[유니티/C#] 씬(Scene) 이동하기

by 은성 (euni) 2025. 3. 24.

씬 이동하기

 

유니티에서는 씬(Scene)이라는 형식으로 여러 화면을 만들 수 있다.
타이틀 화면, 게임 화면, ... 이런 식으로 구분되는 여러 씬들 간을 어떻게 이동할 수 있는지 살펴보자.

 

1. 씬 생성하기

씬 생성하기

 

[Project] 영역에서 우클릭하여 [Create - Scene - Scene] 을 선택하면 새로운 씬을 만들 수 있다.

 

2. 씬 등록하기

Scene List에 씬 등록하기


씬을 생성만 해두었다면 나중에 빌드 시 제대로 로드 되지 않을 수 있다.
[File - Build Profiles] 에서 [Scene List] 를 선택하면 빌드에 등록된 씬을 확인할 수 있는데,
생성한 씬에 들어간 채로 `Add Open Scenes` 버튼을 누르면 SceneList에 새로 생성한 씬이 등록되는 것을 확인할 수 있다.

 

번호가 0으로 지정된 씬이 빌드를 실행했을 때 처음으로 진입하는 씬이 된다.
그래서 예를 들어, TitleScene 과 같이 처음으로 진입해야 하는 씬이 있는 경우 Scene List에서 씬을 드래그해서 0번으로 맞춰주자.


3. 씬 이동 스크립트 작성하기

유니티에서는 씬 이동 기능이 담긴 `SceneManager` 를 기본으로 제공하고 있다.
씬 이동을 구현한다면 `LoadScene()` 함수를 사용하여 다음과 같이 구현하면 된다.

using UnityEngine.SceneManagement;

public class SceneController : MonoBehaviour
{
    public void LoadNewScene()
    {
    	SceneManager.LoadScene("NewScene");
    }
}

 

 

4. 씬 간 데이터 전달하기

씬 이동을 할 경우, 말 그대로 그 씬에 있는 게임 오브젝트들만 존재하게 되기 때문에
A 씬에서 스크립트에 저장해둔 정보들이 B 씬에 들어가면 초기화된다.

A 씬과 B 씬 사이에 정보를 넘겨주어야 한다면, 연관 스크립트에 `DontDestroyOnLoad()` 를 달아두면 된다.

void Awake()
{
    DontDestroyOnLoad(gameObject);
}

 

예를 들어 씬 간 전환을 해주는 SceneController(위에서 작성)는 모든 씬에 있어야 하는데,
각각의 씬에 게임 오브젝트를 추가하고 SceneController 를 추가하기보다는 이렇게 최초의 씬에 설정해두고 DontDestroyOnLoad 로 관리하는 게 좋다.