다음 레벨
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 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를 로그에 남깁니다.
이제 하나의 출구 스크립트가 모든 레벨에서 사용되며, 어느 스크립트에도 씬 이름이 지정되어 있지 않습니다. 레벨을 추가하려면 해당 씬을 목록에 추가하면 됩니다. 순서를 바꾸려면 목록에서 씬을 드래그하면 됩니다.
챌린지
쉬움빌드에는 네 개의 씬이 있습니다. Menu(인덱스 0), 그다음 Level1, Level2, Level3입니다. Menu의 Play 버튼을 누르면 Level1이 열리고, 화살표 키로 Player를 이동할 수 있습니다(둘 다 준비되어 있습니다). 각 레벨에는 Goal 스크립트가 연결된 골드 Goal이 있습니다. 씬 이름을 지정하지 않고 다음을 작성하세요.
- Start에서 이 레벨의 번호와 전체 레벨 수를
levelText에Level 2 of 3형식으로 표시하세요. Menu는 레벨이 아닙니다. - Player(
Player태그)가 골에 도달하면 목록의 다음 레벨을 불러오세요. 마지막 레벨을 마친 뒤에는 Menu로 돌아가세요.
Play를 누르고 세 레벨을 모두 플레이한 다음 Check를 누르세요.
직접 해보기
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)
{
// 플레이어가 목표 지점에 도달했다: 다음 레벨을 불러오거나, 마지막 레벨이라면 메뉴를 불러온다
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.