Unity C# 기초집LESSON 21
씬 전환과 로컬 저장
난이도초급
예상 시간45분
선수지식20강 Object Pool
21강. 씬 전환과 로컬 저장
1. 이번 강의에서 해결할 문제
게임 오버가 같은 화면의 텍스트로만 끝나고 앱을 다시 실행하면 최고 점수가 사라집니다. 결과 Scene과 작은 로컬 설정 저장을 연결합니다.
2. 학습 목표
3. 핵심 개념
SceneManager는 등록된 Scene을 로드합니다. PlayerPrefs는 기기 로컬의 작은 기본형 값을 저장하는 편의 기능으로 암호화된 보안 저장소가 아닙니다. 이 과정에서는 최고 점수만 저장하며 비밀번호, 토큰, 개인정보에는 절대 사용하지 않습니다.
4. 단계별 실습
C# · 파일 경로: Assets/DeliverySorter/Scripts/Storage/BestScoreStore.cs
BestScoreStore.cs
using UnityEngine;
public static class BestScoreStore
{
private const string BestScoreKey = "delivery-sorter.best-score.v1";
public static int Load() => PlayerPrefs.GetInt(BestScoreKey, 0);
public static int SaveIfHigher(int score)
{
int best = Mathf.Max(Load(), score);
PlayerPrefs.SetInt(BestScoreKey, best);
PlayerPrefs.Save();
return best;
}
}
C# · 파일 경로: Assets/DeliverySorter/Scripts/Game/SceneFlow.cs
SceneFlow.cs
using UnityEngine;
using UnityEngine.SceneManagement;
public sealed class SceneFlow : MonoBehaviour
{
public static int LastScore { get; private set; }
public void ShowResult(int score)
{
LastScore = score;
BestScoreStore.SaveIfHigher(score);
SceneManager.LoadScene("Result");
}
public void Restart() => SceneManager.LoadScene("Game");
}
Unity Editor 작업
Result.unity를 만들고 현재 점수, 최고 점수와 재시작 Button을 배치합니다.- Unity 6의 Build Profiles에서
Game,ResultScene을 등록합니다. - Result Presenter가
SceneFlow.LastScore와BestScoreStore.Load()를 표시하게 합니다.
5. 코드가 동작하는 이유
LastScore는 실행 중 Scene 사이의 짧은 전달값이고 PlayerPrefs의 최고 점수만 앱 재실행 뒤 남습니다. 별도 DontDestroyOnLoad 관리자를 만들지 않아 중복 인스턴스 문제를 피합니다. 앱이 Result Scene에서 바로 시작되는 특수 상황에는 LastScore 기본값 0을 표시합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2씬 전환과 로컬 저장 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
21강. 씬 전환과 로컬 저장 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.