안녕하세요. BlockDMask입니다.
오늘은 유니티에서 SceneManger를 이용해서 씬을 전환하는 방법에 대해서 알아보겠습니다.
<목차>
1. Build Setting 씬 추가
2. C# 스크립트 작성
1. 유니티 BuildSetting 에 씬 추가
1-1) File -> BuildSetting 클릭해서 오픈
맥북 단축키 : Command + Shift + B
윈도우 단축키 : Ctrl + Shift + B
파일 -> 빌드세팅을 클릭해서 빌드 세팅 창을 열어줍니다.
1-3) 씬(Scene) 추가
빌드 세팅 맨 위쪽을 보면 이렇게 씬(Scene)을 집어넣는 항목이 있습니다.
프로젝트에 씬이 여러개 있다 하더라도, 빌드 세팅 "Scene in build" 항목에 씬을 넣어주지 않으면, 빌드했을 때 씬이 들어가지 않습니다.
"즉, Scene in build 내부에 추가해준 씬 만 빌드가 됩니다."
(= 저기 사각형 안에 들어간 씬만 실제 게임에서 사용됨.)
추가하는 방법은 두 가지가 있습니다.
(1) 버튼 "Add Open Scene"을 통해서 현재 오픈되어있는 씬을 넣을 수 있습니다.
하지만, 위 작업은 각 씬을 모두 열어서 추가해야하기 때문에 다량의 씬을 넣기엔 조금 번거로울 수 있습니다.
그럴 때는 아래 방법을 사용하면 됩니다.
(2) 추가하려는 씬(Scene)을 드래그 앤 드롭하면 됩니다.
위 두 가지 방법을 이용해서 빌드할 씬을 추가 완료했으면, 이제 2번으로 넘어가서 스크리브를 작성해보겠습니다.
2. 유니티 씬 로드 스크립트 작성
2-1) 씬 로드 스크립트 작성하기 전 알아야 할 것
급하시다면 2-2로 바로 넘어가셔도 됩니다.
유니티에서 씬을 관리하는 클래스는 SceneManager 클래스입니다.
스크립트 맨 위에 using UnityEngine.SceneManager; 를 입력해서 해당 네임스페이스를 사용하겠다고 명명합니다.
우리가 사용해야 할 메서드(함수)는
SceneManager.LoadScene입니다.
메서드 LoadScene 은 매개변수 타입과, 개수가 여러 개로 오버로딩 되어있습니다.
위 스크린샷을 보면 많이 있죠?
이중에 오늘은 딱 제일 간단한 두 가지만 학습해보겠습니다. (이것만 알아도 씬 이동에 문제없습니다.)
두 메서드 모두 매개변수로 받은 씬을 찾아서 바로 씬을 이동 및 전환시켜주는 기능을 합니다.
매개변수가 string, int로 각각 다른데 이것은 아래 스크린 샷에 있는 것을 의미합니다.
빌드 세팅 창의 왼쪽을 보면 씬의 이름(string)이 있고 우측을 보면 씬 번호 인덱스(int)가 있습니다.
이 기준에 따라서 LoadScene이 씬을 불러주는 것입니다.
- SceneManager.LoadScene(string)
씬 이름을 통해서 Stage 1 씬을 로드한다고 하면 아래 두 가지 방법이 있습니다.
씬 이름만 입력
ex) SceneManager.LoadScene("Stage1");
씬 경로 + 이름 입력
ex) SceneManager.LoadScene("1_Scenes/Stage1");
- SceneManager.LoadScene(int)
씬 번호를 이용해서 씬을 전환하려고 하면 아래와 같이 사용하면 됩니다.
ex) SceneManager.LoadScene(0);
// 0번째 씬을 로드합니다.
2-2) C# 스크립트 작성
using UnityEngine;
using UnityEngine.SceneManagement; // 필요
public class Example : MonoBehaviour
{
public void NextSceneWithString()
{
// 문자열 이용해서 씬 전환
//SceneManager.LoadScene("Stage1"); // OK
SceneManager.LoadScene("1_Scenes/Stage1"); // OK
}
public void NextSceneWithNum()
{
// 씬 번호를 이용해서 씬 이동
SceneManager.LoadScene(0); // 0 번째 씬 로드
}
}
이렇게 이번 포스팅에서는 유니티 씬 이동, 씬 전환에 대해서 알아보았습니다.
감사합니다.
'<개인공부> > [Unity]' 카테고리의 다른 글
[유니티] 텍스트 메시 프로 한글이 네모로 나올때 (Text Mesh Pro 한글 세팅) (4) | 2022.05.19 |
---|---|
[유니티] vs code 디버깅 (1) | 2022.05.15 |
[유니티] 랜덤 함수 Random.Range() (2) | 2022.05.11 |
[유니티] 로그캣(logcat)을 이용한 안드로이드 디버깅 방법 (0) | 2022.05.09 |