잔잔이네
article thumbnail

게임 등을 플레이 하면서 맵이 바뀌는 경험을 해보았을 것이다.

유니티에서 이 기능인 씬 이동/전환을 해보자. 

코드 상단에 using UnityEngine.SceneManagement;라는 SceneManagement를 이용하여 씬 전환을 할 수 있다.

 

 

 

 


씬 전환 [SceneManager.LoadScene]

 

 

ChangeScene

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ChangeScene : MonoBehaviour
{
    private void OnTriggerEnter(Collider other)
    {
        // Player 태그를 가진 오브젝트가 아니면 바로 반환
        if (!other.CompareTag("Player"))
            return;

        // 현재 활성화된 씬이름을 얻는다.
        Scene nowScene = SceneManager.GetActiveScene();
        
        switch (nowScene.name)
        {
            case "FirstScene":
                SceneManager.LoadScene("SecondScene");
                break;
            case "SecondScene":
                SceneManager.LoadScene("FirstScene");
                break;

        }
    }
}

트리거 이벤트를 사용하기 위해 Player 오브젝트가 아닌 씬 전환을 할 오브젝트(위치)에 isTrigger를 활성화 한다.

트리거이벤트에서 아무 오브젝트나 씬 전환을 시키지 않게 하기위해 "Player" 태그를 가진 오브젝트만 씬 전환을

할 수 있게 if문 조건을 걸어준다. 

 

현재 활성화된 씬 이름을 얻어 nowScene에 담는다.

SceneManager.GetActiveScene();

 

스위치문에서 위에서 얻은 씬의 이름이 "FirstScene"이면 "SecondScene"씬으로 이동하고 "SecondScene"씬 이였다면 "FirstScene"으로 이동한다.

switch (nowScene.name)
        {
            case "FirstScene":
                SceneManager.LoadScene("SecondScene");
                break;
            case "SecondScene":
                SceneManager.LoadScene("FirstScene");
                break;
        }

 

각 씬에서 Portal이라는 오브젝트의 컴포넌트에  위에 작성한 스크립트를 컴포넌트로 넣어 Player 오브젝트가 닿았을 때

트리거이벤트로 씬 이동이 잘 이루어졌다. 

 

만약 씬 이동이 되지않는다면 왼쪽 상단의 [File] - [Build Settings]에서 상단의 Scenes In Build에 프로젝트 뷰에 있는 씬들을 드래그해서 추가해주면 된다.

 

profile

잔잔이네

@잔잔잔잔

🌈

검색 태그