생존하기
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 47번째.
챌린지
중급마지막 단계: 플레이가 끝나면 최고 기록이 저장됩니다. 이전 수업의 모든 내용을 그대로 유지하세요. 캔버스에는 숨겨진 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
{
// 이후 강의에서 이 부분을 채웁니다: 실행의 종료와 최고 기록.
}