728x90
SMALL
PlayerPrefs는 간단한 데이터를 저장하고 불러오는 기능을 제공하는 클래스이다. 주로 게임의 설정, 사용자 선호도, 간단한 진행 상태 등을 저장하는 데 사용된다. PlayerPrefs는 키-값(key-value) 쌍으로 데이터를 저장하며, 이 데이터는 플레이어의 기기에 영구적으로 저장된다.
1. PlayerPrefs 주요 특징
- 로컬 저장
- PlayerPrefs는 운영체제의 레지스트리(Windows), plist(macOS, iOS), SharedPreferences(Android) 등에 데이터를 저장한다.
- 문자열, 정수, 실수 값만 저장 가능
- string, int, float 타입만 저장할 수 있다.
- 배열이나 Vector3, bool 등의 데이터는 직접 저장할 수 없으며, 문자열 변환(Serialize) 후 저장해야 한다.
- 간단한 데이터만 저장 추천
- PlayerPrefs는 주로 설정값, 점수, 게임 진행 상태 등 작은 데이터를 저장하는 데 사용된다.
- 대량의 데이터(예: 게임 아이템 목록, 캐릭터 상태 등)는 별도의 파일이나 데이터베이스 저장이 필요하다.
2. PlayerPrefs 사용법
데이터 저장(Set)
PlayerPrefs.SetInt("HighScore", 1000); // 정수 저장
PlayerPrefs.SetFloat("Volume", 0.5f); // 실수 저장
PlayerPrefs.SetString("PlayerName", "John"); // 문자열 저장
PlayerPrefs.Save(); // 반드시 호출하여 변경 사항을 저장
주의: Save()를 호출하지 않으면 Unity가 종료될 때 자동 저장되지만, 강제 종료 시 데이터가 손실될 수 있다.
데이터 불러오기 (Get)
int highScore = PlayerPrefs.GetInt("HighScore", 0); // 기본값 0
float volume = PlayerPrefs.GetFloat("Volume", 1.0f); // 기본값 1.0
string playerName = PlayerPrefs.GetString("PlayerName", "Guest"); // 기본값 "Guest"
주의: Get 함수에서 키가 존재하지 않을 경우 기본값을 반환한다.
데이터 삭제 (Delete)
PlayerPrefs.DeleteKey("HighScore"); // 특정 키 삭제
PlayerPrefs.DeleteAll(); // 모든 데이터 삭제 (주의!)
주의 : DeleteAll()은 모든 저장 데이터를 삭제하므로 사용 시 주의해야 한다.
사용 예시
게임 볼륨 설정 저장
// 볼륨 설정 저장
void SaveVolume(float volume)
{
PlayerPrefs.SetFloat("Volume", volume);
PlayerPrefs.Save();
}
// 볼륨 설정 불러오기
float LoadVolume()
{
return PlayerPrefs.GetFloat("Volume", 1.0f); // 기본값 1.0
}
최고 점수 저장 및 불러오기
// 최고 점수 저장
void SaveHighScore(int score)
{
int currentHighScore = PlayerPrefs.GetInt("HighScore", 0);
if (score > currentHighScore)
{
PlayerPrefs.SetInt("HighScore", score);
PlayerPrefs.Save();
}
}
// 최고 점수 불러오기
int LoadHighScore()
{
return PlayerPrefs.GetInt("HighScore", 0);
}
PlayerPrefs 정리
✅ 장점
- 간단한 데이터 저장이 가능 (설정값, 점수, 상태 저장 등)
- string, int, float 타입 지원
- 플랫폼 간 호환 가능
❌ 단점
- 보안 취약 (외부에서 조작 가능)
- 배열, 객체 저장 불가능 (JSON 변환 필요)
- 대량의 데이터 저장 불가능 (파일 저장 또는 DB 필요)
🔹 사용 추천 상황:
- 게임 설정값 (볼륨, 해상도, 컨트롤 설정)
- 간단한 게임 진행 데이터 (최고 점수, 플레이어 이름)
🔹 사용 비추천 상황:
- 중요한 데이터 (로그인 정보, 보안 관련 데이터)
- 대량의 데이터 (인벤토리, 스테이지 정보 등
PlayerPrefs는 간단한 설정 값이나 작은 데이터를 저장하는 데 적합하지만, 대량의 데이터나 보안이 필요한 데이터는 다른 저장 방식(JSON, SQLite, 클라우드 저장 등)을 고려하는 것이 좋다.
728x90
'Unity' 카테고리의 다른 글
Json이란? - Unity JsonUtility (0) | 2025.03.12 |
---|---|
Json이란? - NewTonSoft Json (1) | 2025.03.10 |
[UI] - Cnavas Render Mode (0) | 2025.02.04 |
[Unity] - Text Mesh Pro (0) | 2024.07.20 |
MonoBehaviour 와 생명주기란 무엇일까? (0) | 2024.03.08 |