반응형

1. PlayerPrefs란?

PlayerPrefs는 Unity에서 간단한 데이터 저장을 위해 제공하는 기능으로, 게임의 설정 값이나 간단한 데이터를 영구적으로 저장하는 데 사용됩니다. 내부적으로 Windows에서는 레지스트리, Android/iOS에서는 로컬 파일을 이용하여 데이터를 저장합니다.


2. PlayerPrefs 사용법

기본적인 데이터 저장 및 불러오기

// 데이터 저장
PlayerPrefs.SetInt("HighScore", 1000);
PlayerPrefs.SetFloat("Volume", 0.8f);
PlayerPrefs.SetString("PlayerName", "Alice");

// 데이터 불러오기 (기본값 설정 가능)
int highScore = PlayerPrefs.GetInt("HighScore", 0);
float volume = PlayerPrefs.GetFloat("Volume", 1.0f);
string playerName = PlayerPrefs.GetString("PlayerName", "Guest");

// 데이터 삭제
PlayerPrefs.DeleteKey("HighScore");

// 모든 데이터 삭제
PlayerPrefs.DeleteAll();

// 변경 사항 저장 (모바일에서 필요할 수도 있음)
PlayerPrefs.Save();

3. PlayerPrefs의 장점과 단점

장점

  1. 간단한 데이터 저장 가능
    • 별도의 파일 I/O 작업 없이 간단한 코드로 데이터를 저장할 수 있습니다.
  2. 플랫폼 독립적
    • Windows, Mac, Android, iOS 등에서 동일한 방식으로 사용할 수 있습니다.
  3. 설정 값 저장에 적합
    • 볼륨, 해상도, 컨트롤 설정 등의 데이터를 쉽게 저장하고 불러올 수 있습니다.

단점

  1. 보안이 취약함
    • 저장된 데이터가 암호화되지 않으며, Windows에서는 레지스트리를, 모바일에서는 로컬 파일을 조작하면 쉽게 변경할 수 있습니다.
  2. 대량의 데이터 저장에는 부적합
    • PlayerPrefs는 작은 설정 값을 저장하는 용도로 만들어졌으며, 큰 데이터를 저장하면 성능 저하가 발생할 수 있습니다.
  3. Binary나 구조체 저장 불가
    • int, float, string 타입만 저장 가능하며, 리스트나 복잡한 데이터 구조를 저장하려면 JSON 변환이 필요합니다.
    • 예제:
       
string json = JsonUtility.ToJson(myData);
PlayerPrefs.SetString("MyData", json);

4. PlayerPrefs를 사용해야 할 때 vs 다른 대안

기능PlayerPrefs대안

설정 값 저장 ✅ 적합 -
게임 진행 데이터 저장 ❌ 부적합 JSON 파일, SQLite, Binary Serialization, Cloud Save
보안이 중요한 데이터 (예: 유료 아이템) ❌ 매우 부적합 암호화된 파일, 클라우드 저장 (Firebase, PlayFab 등)

5. 결론

  • PlayerPrefs는 설정 값을 저장하는 데 유용하지만, 중요한 게임 데이터(점수, 진행 상황, 인벤토리 등)를 저장하는 용도로 사용하면 보안 문제가 발생할 수 있습니다.
  • 큰 데이터 저장이 필요하다면 파일 시스템, JSON, SQLite, 클라우드 저장을 고려하는 것이 좋습니다.

🔹 추천 사용 예시

✅ PlayerPrefs 사용: 볼륨, 해상도, 키 설정 저장
❌ PlayerPrefs 사용 X: 세이브 데이터, 보안이 중요한 정보

반응형

+ Recent posts