유니티에서는 씬(Scene)이라는 형식으로 여러 화면을 만들 수 있다.
타이틀 화면, 게임 화면, ... 이런 식으로 구분되는 여러 씬들 간을 어떻게 이동할 수 있는지 살펴보자.
1. 씬 생성하기
[Project] 영역에서 우클릭하여 [Create - Scene - Scene] 을 선택하면 새로운 씬을 만들 수 있다.
2. 씬 등록하기
씬을 생성만 해두었다면 나중에 빌드 시 제대로 로드 되지 않을 수 있다.
[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 로 관리하는 게 좋다.
'개발 > Unity·C#' 카테고리의 다른 글
[유니티] AI 기반 코드 편집기 Cursor AI(커서) 설치하고 유니티(Unity) 연동하기 (1) | 2025.03.31 |
---|---|
[유니티/C#] 디자인 패턴 (1) - 싱글톤 패턴(Singleton)으로 스크립트 쉽게 호출하기 (0) | 2025.03.25 |
[유니티/C#] 이벤트(event) 사용하기 (0) | 2025.03.23 |
[유니티/C#] Enum(열거형) 사용하기 (0) | 2025.03.22 |
[C#] 포맷 텍스트(Format Text) 소개 (string.Format, ToString, $ 문자열 보간법) (0) | 2025.02.15 |