SceneManager
Scene들의 이동은 Build Settings의 Scenes In Build 내의 씬들을 기반으로 이동한다.
* File - Build Settings로 접근 가능하다.
- 씬은 Add Open Scenes를 눌러 현재 켜져있는 씬을 추가하거나 드래그 앤 드롭으로 에셋폴더에 있는 씬을 Scenes In Build에 가져다 넣어서 추가하면 된다.
- 우측에 숫자는 인덱스인데 0부터 시작한다. (배열의 인덱스와 비슷)
CollisionHandler.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class CollisionHandler : MonoBehaviour
{
private void OnCollisionEnter(Collision collision)
{
switch (collision.gameObject.tag)
{
case "Friendly":
Debug.Log("This thing is firendly");
break;
case "Finish":
Debug.Log("Congrats, yo, you finished!");
LoadNextLevel();
break;
case "Fuel":
Debug.Log("You picked up fuel");
break;
default:
Debug.Log("Sorry, you blew up!");
ReLoadLevel();
break;
}
}
void LoadNextLevel()
{
int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
int nextSceneIndex = currentSceneIndex + 1;
// SceneManager.sceneCountInBuildSettings 인덱스 총 갯수를 계산
if (nextSceneIndex == SceneManager.sceneCountInBuildSettings)
{
nextSceneIndex = 0;
}
SceneManager.LoadScene(nextSceneIndex);
}
void ReLoadLevel()
{
// 변수에 저장하는 이유는 나중에 봤을 때 코드를 해석할 시간을 줄이기 위해서이다.
int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
// 현재 실행되고 있는 씬의 인덱스를 불러옴
SceneManager.LoadScene(currentSceneIndex);
}
}
정상적으로 다음 씬으로 넘어가고
마지막 레벨에 다다랐을 때 첫 씬으로 돌아오는 것을 확인할 수 있다.
'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 부스트 프로젝트' 카테고리의 다른 글
오디오 클립 (0) | 2022.08.23 |
---|---|
Invoke 함수 사용 (0) | 2022.08.12 |
Switch (0) | 2022.08.12 |
유니티 오디오 (0) | 2022.08.12 |
소스 컨트롤 (0) | 2022.08.12 |