최고 기록 저장하기
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 64개 중 60번째.
Arena Survivor가 완성되었습니다. 추상 Enemy에는 두 가지 종류가 있고, 모든 공격에 IDamageable을 사용하며, ScriptableObject에서 웨이브를 불러오고, 인터페이스를 통해 아이템을 획득하며, HUD는 수신만 하고, 마지막으로 최고 기록을 JSON으로 저장합니다.
챌린지
중급최고 기록을 best.json에 저장하세요.
GameManager.cs에BestRun클래스[System.Serializable]를 추가하고, 공개 정수 필드wave와kills를 선언하세요.- 파일이 있으면
Start에서Application.persistentDataPath의best.json을JsonUtility로 불러오세요. - 게임 오버 시 웨이브가 더 높거나, 웨이브가 같으면서 처치 수가 더 많으면 최고 기록으로 갱신하여 저장하세요.
bestText에는Best: wave 3, 12 kills가 표시됩니다.
‘플레이’를 누르고 두 번 죽어 보세요. 최고 기록은 유지됩니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
public class GameManager : MonoBehaviour
{
[SerializeField] private Hero hero;
[SerializeField] private WaveSpawner spawner;
[SerializeField] private GameObject gameOverPanel;
[SerializeField] private TMP_Text resultText;
[SerializeField] private TMP_Text bestText;
[SerializeField] private Button restartButton;
private int kills;
void OnEnable()
{
hero.Died += GameOver;
Enemy.Died += CountKill;
}
void OnDisable()
{
hero.Died -= GameOver;
Enemy.Died -= CountKill;
}
void Start()
{
gameOverPanel.SetActive(false);
restartButton.onClick.AddListener(Restart);
}
void CountKill(Enemy enemy)
{
kills++;
}
void GameOver()
{
Time.timeScale = 0f;
int wave = spawner.Wave;
resultText.text = "Wave " + wave + ", " + kills + " kills";
gameOverPanel.SetActive(true);
}
void Restart()
{
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Unity 게임 아키텍처의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드