SceneManager

Scene들의 이동은 Build Settings의 Scenes In Build 내의 씬들을 기반으로 이동한다.

* File - Build Settings로 접근 가능하다.

- 씬은 Add Open Scenes를 눌러 현재 켜져있는 씬을 추가하거나 드래그 앤 드롭으로 에셋폴더에 있는 씬을 Scenes In Build에 가져다 넣어서 추가하면 된다.

- 우측에 숫자는 인덱스인데 0부터 시작한다. (배열의 인덱스와 비슷)

Build Settings

 

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

+ Recent posts