씬 (Scene)
- 유니티에서 게임 월드를 구성하는 단위
- 프로젝트에 원하는 수만큼 씨능 포함할 수 있고 씬전환을 통해 다른 게임월드를 불러올 수 있음
- 다중 씬을 이용하여 여러 씬을 동시에 열어 같은 게임월드에서 사용도 가능함
<빌드설정>
- 유니티에서 여러 씬을 사용하기 위해선 빌드 설정에서 씬을 포함해야 함
- 빌드 설정에서 포함한 씬을 게임 빌드 결과물에 포함함
< 씬 전환>
- 프로젝트에 포함된 다른 씬을 로딩하고 기존의 씬의 내용을 삭제함.
public class SceneChanger : MonoBehaviour
{
private void Awake()
{
Debug.Log("씬 체인저 생성!");
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha0))
{
SceneManager.LoadScene("TitleScene");
}
else if (Input.GetKeyDown(KeyCode.Alpha1))
{
SceneManager.LoadScene("GameScene");
}
}
public void ChageScene(string sceneName)
{
SceneManager.LoadScene(sceneName);
}
public void AddScene(string sceneName)
{
SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
}
public void ChangeSceneASync()
{
AsyncOperation operation = SceneManager.LoadSceneAsync("StageScene2", LoadSceneMode.Additive);
operation.allowSceneActivation = true;
bool isLoaded = operation.isDone;
float progress = operation.progress;
operation.completed += (oper) => { };
}
public void UnloadScene()
{
Scene scene = SceneManager.GetSceneByName("StageScene2");
if (scene.isLoaded == true)
{
SceneManager.UnloadSceneAsync(scene);
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag != "Player")
return;
SceneManager.LoadSceneAsync("StageScene2", LoadSceneMode.Additive);
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject.tag != "Player")
return;
SceneManager.UnloadSceneAsync("StageScene2");
}
}