Menu
CoddyTech

다음 레벨

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 19번째.

빌드의 장면 목록에 있는 각 장면에는 번호, 즉 빌드 인덱스가 있습니다. 첫 번째 장면은 0, 다음 장면은 1이며 이런 식으로 이어집니다. LoadScene은 이름뿐 아니라 이 번호도 받으며, SceneManager.sceneCountInBuildSettings는 목록에 장면이 몇 개 있는지 알려 줍니다. 목록에서 레벨이 순서대로 배치되어 있다면 다음 레벨은 활성 장면의 인덱스에 1을 더한 값입니다. 이 출구는 다음 레벨을 불러오고, 마지막 레벨 이후에는 멈춥니다:

void OnTriggerEnter(Collider other)
{
    if (!other.CompareTag("Player")) return;
    int next = SceneManager.GetActiveScene().buildIndex + 1;
    if (next < SceneManager.sceneCountInBuildSettings)
    {
        SceneManager.LoadScene(next);
    }
    else
    {
        Debug.Log("You finished the game!");
    }
}

장면이 네 개라면 인덱스는 0부터 3까지이고 sceneCountInBuildSettings는 4입니다. 따라서 마지막 레벨에서 next는 4가 되어 목록 끝에서 하나를 넘어갑니다. 그래서 테스트 조건은 next < sceneCountInBuildSettings입니다. LoadScene(4)를 호출하면 아무것도 불러오지 못하고 Unity 오류 Cannot load scene: Invalid scene name (empty string) and invalid build index 4가 로그에 표시됩니다.

이제 하나의 출구 스크립트를 모든 레벨에서 사용할 수 있으며, 어느 스크립트에도 장면 이름이 지정되어 있지 않습니다. 레벨을 추가하려면 해당 장면을 목록에 추가하고, 순서를 변경하려면 목록에서 장면을 드래그하면 됩니다.

challenge icon

챌린지

쉬움

각 목표 지점에서 다음 레벨로 이동하도록 하세요.

  1. Start()에서 levelText에 "Level " + level + " of " + levels를 표시하세요. level은 활성 장면의 buildIndex이고, levels는 SceneManager.sceneCountInBuildSettings - 1입니다.
  2. OnTriggerEnter에서 플레이어가 들어오면 buildIndex + 1을 불러오세요. 단, 그 값이 sceneCountInBuildSettings보다 작지 않으면 0(메뉴)을 불러오세요.

‘플레이’를 누르고 세 레벨을 모두 완료하세요. 메뉴로 돌아옵니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Goal : MonoBehaviour
{
    public TMP_Text levelText;

    void Start()
    {
        // "Level 2 of 3" 표시: 현재 레벨 번호와 전체 레벨 수
    }

    void OnTriggerEnter(Collider other)
    {
        // 플레이어가 목표 지점에 도달하면 다음 레벨을 불러오고, 마지막 레벨이면 메뉴를 불러온다
    }
}

실제 게임 만들기의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드