Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Di
- 구글플레이콘솔
- 이벤트 버스
- C#
- 유니티
- 게임 디자인 패턴
- event bus
- Canvas Scaler
- MVP 패턴
- github desktop
- 의존성 주입
- 오브젝트 풀
- New Input System
- Dependency Injection
- 스타일 지침
- Object Pool
- Visual Studio Installer
- 개발
- Render Mode
- 테이블 데이터
- 추상 팩토리 패턴
- 콘솔 앱
- Abstract Factory Pattern
- 상태 패턴
- 프로젝트 생성
- Unity 기술면접
- 구글 스프레드 시트
- 데이터 형식
- 기술면접
- unity
Archives
- Today
- Total
DevDino
[Unity 기술면접] Unity 데이터 저장/불러오기 본문
"게임 데이터를 저장하고 불러오는 방법에는 어떤 것들이 있으며, 각각의 특징은 무엇인가요?"
Unity 데이터 저장/불러오기
PlayerPrefs
키-값(key-value) 형태로 int, float, string 타입만 저장할 수 있다.
PlayerPrefs.SetInt("HighScore", highScore);
PlayerPrefs.Save();
...
int saved = PlayerPrefs.GetInt("HighScore", 0);
장점
- 구현이 간단하고 값을 바로 저장하고 불러올 수 있음
단점
- 저장할 수 있는 데이터 타입이 제한됨
- 보안이 약하고 복잡한 게임 상태 저장에는 부적합
직렬화 + 파일 저장
구조체, 클래스, 리스트, 여러 변수 등 복합적인 데이터를 저장하기 위해 직렬화(serialization)하고 파일로 저장하고 읽어오는 방식을 사용한다.
Unity에 내장된 JsonUtility로 json 직렬화/역직렬화할 수 있다.
[Serializable]
public class PlayerData
{
public string playerName;
public int level;
}
private string saveFilePath = Application.persistentDataPath + "/파일명.json";
public void SaveGame(PlayerData data)
{
// 객체를 json 문자열로 직렬화
string json = JsonUtility.ToJson(data);
// 파일로 저장
System.IO.File.WriteAllText(saveFilePath, json);
}
public PlayerData LoadGame()
{
if(!File.Exists(saveFilePath))
return null;
// 파일에서 json 문자열 읽기
string json = System.IO.File.ReadAllText(saveFilePath);
// json을 객체로 역직렬화
PlayerData data = JsonUtility.FromJson<PlayerData>(json);
return data;
}
장점
- 구조화된 복잡한 데이터 저장 가능
- 디버그, 수동 수정, 데이터 검증에 유리
단점
- json은 텍스트 기반이라 파일 크기가 커질 수 있음
- 직접 직렬화 로직을 작성해야 하므로 구현이 비교적 어려움
- 보안이 약해 암호화가 필요함
요약
PlayerPrefs는 int/float/string 타입의 간단한 설정값을 저장하기에 편하고 빠르지만 복잡한 게임 상태 저장에 한계가 있다.
직렬화 + 파일 저장을 사용하면 복잡한 데이터 구조를 저장하고 불러올 수 있어서 확장성과 유연성이 뛰어나다.
'Unity > 기술면접' 카테고리의 다른 글
| [Unity 기술면접] 객체지향 설계 5대 원칙(SOLID) (0) | 2026.07.14 |
|---|---|
| [Unity 기술면접] C# 델리게이트(Delegate)와 이벤트(Event)의 차이점 (0) | 2026.01.15 |
| [Unity 기술면접] Unity Input System (0) | 2026.01.14 |
| [Unity 기술면접] OnCollision vs OnTrigger (0) | 2026.01.12 |
| [Unity 기술면접] Unity Collider vs Rigidbody (1) | 2026.01.09 |