먼저, C# Script에서 다른 Scene으로 이동을 하기 위해서는 다음과 같다.


1. 코드 상단에 Scene을 관리하는 SceneManagement를 추가해준다. 


using UnityEngine.SceneManagement;


1. Scene 이동하는 코드를 다음과 같다.


SceneManager.LoadScene("Scene_Play");


LoadScene 뒤에 매개변수에는 string으로 된 이동하고자 하는 Scene의 이름이 들어간다.


위 코드같은 경우 Scene_Play로 이동하겠다는 의미이다.


다만, 여러개로 오버라이딩 되어있어 Scene의 이름 이외에도 씬의 번호 또는 다른 것으로도 Scene 이동이 가능하다.


또한, 이동하려고 하는 버튼을 눌렀을 때 에러가 날 수도 있다.


Scene 'Scene_Play' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.

To add a scene to the build settings use the menu File->Build Settings...

UnityEngine.SceneManagement.SceneManager:LoadScene(String)

Source_Title:Press_Play() (at Assets/Scripts/Source_Title.cs:21)

UnityEngine.EventSystems.EventSystem:Update()


새롭게 만들긴 했지만, 아직 Scene에 대한 정보를 갖고 있지 않기 때문이다.


File - Build Settings에서 Scene을 추가해주어야 한다.


밑에 Add Open Scenes 버튼을 클릭하면 현재 Scene이 등록된다.


Scene_Play를 추가해주는 방법은 드래그해서 끌어다 넣으면 된다.


이렇게하면 유니티에게, Scene이 2개가 존재한다는 것을 알리는 의미이다.


이것은 밑으로 누적되는 것이 아니라, 순서를 쉽게 바꿀 수 있다. 

즉, Scene_Play를 Scene_Title위로 마우스 드래그로 쉽게 끌어 올릴수 있다.


그래서 SceneManager.LoadScene(1)과 같이 번호를 쓰게 된다면 Scene이 꼬일 수 있다. 

따라서, SceneManager.LoadScene을 사용할때는 매개변수로 Scene의 이름을 명시해서 사용하는 것이 좋다.

Posted by sungho88
,