Menu
CoddyTech

레벨 다시 시작하기

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

레벨을 초기화하는 가장 빠른 방법은 다시 불러오는 것입니다. SceneManager.GetActiveScene()은 현재 열려 있는 씬을 반환하며, 그 씬의 name(또는 buildIndex)을 LoadScene에 전달합니다. 게임 오버 패널의 이 다시 시작 버튼은 다음을 호출합니다.

public void Restart()
{
    SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

Unity는 열려 있는 씬을 파괴한 다음 씬 파일에서 다시 생성합니다. 플레이어가 넘어뜨린 상자를 포함해 모든 오브젝트가 씬에 배치된 원래 위치로 돌아가고, 모든 필드가 Inspector 값을 다시 가지며, Awake와 Start가 다시 실행됩니다. 하나씩 원래대로 되돌리는 코드는 필요하지 않습니다. 버튼이 "Level3"과 같은 이름 대신 활성 씬을 요청하므로, 같은 스크립트를 배치한 어떤 레벨이든 다시 시작할 수 있습니다.

static 필드는 씬의 일부가 아닙니다. 클래스에 속하므로 씬을 다시 불러와도 그대로 유지됩니다. private static float bestTime;은 재시작해도 최고 기록을 유지하지만, 일반적인 private float time;은 새 씬과 함께 다시 0부터 시작합니다. GameManager.Instance도 static입니다. 씬을 다시 불러온 후에는 새 GameManager의 Awake가 값을 설정할 때까지 파괴된 GameManager를 가리킵니다.

challenge icon

챌린지

쉬움

LevelRestart 스크립트가 들어 있는 Level 오브젝트가 각각 있는 두 개의 레벨, Level1과 Level2가 있습니다. 화살표 키로 Player를 이동하고, Level1의 금색 블록은 Level2를 불러옵니다(둘 다 준비되어 있음). LevelRestart.cs를 완성하세요.

  • 플레이어가 fallY (-3)보다 아래로 떨어지면 falls에 1을 더하고, 플레이어가 있는 레벨을 다시 시작하세요. Level2에서 떨어지면 Level2가 다시 시작됩니다.
  • falls는 게임에서 발생한 모든 낙하 횟수를 세므로, 씬을 다시 불러와도 값이 유지되어야 합니다. 시작할 때 이미 Falls: 1로 표시됩니다.

Play를 누르고 두 레벨에서 모두 가장자리 밖으로 걸어 나간 다음 Check를 누르세요.

직접 해보기

using UnityEngine;
using TMPro;

public class LevelRestart : MonoBehaviour
{
    public Transform player;
    public TMP_Text fallsText;
    public float fallY = -3f;
    private int falls;

    void Start()
    {
        fallsText.text = "Falls: " + falls;
    }

    void Update()
    {
        // fallY 아래로 떨어지면: 낙하 횟수를 세고 플레이어가 있는 레벨을 다시 시작합니다
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

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