본문 바로가기
  • 불확실한 내일을 위해
유니티 C#/이론

유니티 기초 - 버튼 눌러서 씬(Scene) 전환하는 법

by 그린초코 2024. 4. 25.

씬을 여러개 만들어서 전환을 하고 싶을 땐 스크립트와 전용 오브젝트를 생성하여 직접 구현해야한다.

(유니티는 씬을 전환하는 컴포넌트를 제공하지 않는다.)

 

예를 들어 [1. StartScene] 와 [2. PlayScene] 이렇게 2개의 씬이 있는데 [1. StartScene] 에 있는 오브젝트 버튼을 클릭하면 [2. PlayScene] 으로 화면이 전환되는 것을 해보면 아래와 같다.  

 

1. [1. StartScene]씬에 씬을 전환할 매개체인 UI버튼을 생성한다. 

2. A씬과 B씬을 준비하여 저장한 뒤 File - Building Setting 에서 Scenes In Build에 추가해둔다. 

 

3. 스크립트를 하나 만들어 아래와 같이 저장한다. 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // StartSceneManager 클래스를 사용하기 위해

public class StartSceneManager : MonoBehaviour
{
    public void OnClickStart()
    {
        SceneManager.LoadScene("2. PlayScene"); // 띄어쓰기도 똑같아야 함
    }
}

 

버튼의 OnClick()이벤트와 연결하기 위해 새로운 함수를 만들어 씬 전환 코드를 작성한 것이다. 

OnClcikStart() 함수는 내가 임의로 만든 새로 함수다. (이름을 마음대로 정한 것. ClickStart()로 정해도 된다.) 이 함수에 public 을 써서 버튼 컴포넌트에서 OnClickStart()함수에 접근할 수 있도록 한다. 

SceneManagement라는 네임스페이스를 선언하고 Using 키워드를 이용해 SceneManeger라는 클래스에 접근한다. 

LoadScene()함수는 인수로 보낸 문자열과 같은 이름의 씬을 불러오는 기능을 한다. 

 

4. 빈오브젝트 (Create Empty)를 하나 만들어 이름을 StartSceneManager로 바꾼 뒤 위 스크립트를 적용한다.

5. 이 스크립트를 적용한 오브젝트를 버튼의 on clikc() 부분에 넣는다.

6. on click() 적용 후 Nu function 부분을 StartSceneManager 의 OnClickStart() 으로 선택해준다. 

 

그런 뒤 버튼을 클릭해보면 [2. PlayScene] 로 씬이 전환되는 것을 확인할 수 있다. 

728x90

댓글