<개인공부>/[Unity]

[유니티] 씬 전환, 씬 이동, Scene 전환 (SceneManager)

사용자 BlockDMask 2021. 9. 30. 23:00
반응형

안녕하세요. 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 번째 씬 로드
    }
}

 

이렇게 이번 포스팅에서는 유니티 씬 이동, 씬 전환에 대해서 알아보았습니다.
감사합니다.

반응형