Menu
CoddyTech

생존하기

Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 47번째.

challenge icon

챌린지

중급

마지막 단계: 플레이가 끝나면 최고 기록이 저장됩니다. 이전 수업의 모든 내용을 그대로 유지하세요. 캔버스에는 숨겨진 GameOverPanel이 있으며, 여기에 ResultText, BestText와 Fight again이라고 표시된 RestartButton이 있습니다. GameManager 오브젝트에는 GameManager 스크립트가 있고, Inspector에서 hero, spawner, gameOverPanel, resultText, bestText와 restartButton이 설정되어 있습니다.

  • Hero에 public event Action Died를 추가합니다. 체력이 0에 도달하면 Hero가 스스로 비활성화된 후 이벤트를 발생시킵니다.
  • GameManager.cs에 public int wave와 public int kills를 포함하는 [System.Serializable] 클래스 BestRun을 추가합니다.
  • GameManager는 영웅의 Died와 이번 플레이에서 처치한 적의 수를 세는 Enemy.Died를 감지합니다. OnEnable에서 구독하고 OnDisable에서 구독을 해제합니다. Start에서는 Application.persistentDataPath에 있는 best.json 파일이 존재할 경우 JsonUtility를 사용해 최고 기록을 불러오고, 패널을 숨긴 다음 restartButton을 누르면 게임이 다시 시작되도록 합니다.
  • 영웅이 죽으면 게임을 멈춥니다(Time.timeScale을 0으로 설정). 이번 플레이의 기록은 스포너의 Wave와 처치 수입니다. 더 높은 웨이브에 도달했거나 같은 웨이브에서 더 많은 적을 처치했다면 새로운 최고 기록입니다. 이때 최고 기록을 갱신하고 JsonUtility.ToJson을 사용해 best.json에 저장합니다. 이번 기록은 resultText에 Wave 2, 7 kills 형식으로, 최고 기록은 bestText에 Best: wave 3, 12 kills 형식으로 표시한 다음 패널을 보여줍니다.
  • 다시 시작하면 시간 배율을 1로 되돌리고 씬을 다시 불러옵니다.

Play를 눌러 쓰러질 때까지 싸운 다음, 최고 기록을 깨 보세요. 그런 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // 이후 강의에서 이 부분을 채웁니다: 실행의 종료와 최고 기록.
}

Unity 게임 아키텍처의 모든 레슨