Unity

[Unity] - PlayerPrefs란?

MuscleDeveloper5683 2025. 3. 4. 17:06
728x90
SMALL

 

PlayerPrefs는 간단한 데이터를 저장하고 불러오는 기능을 제공하는 클래스이다. 주로 게임의 설정, 사용자 선호도, 간단한 진행 상태 등을 저장하는 데 사용된다. PlayerPrefs키-값(key-value) 쌍으로 데이터를 저장하며, 이 데이터는 플레이어의 기기에 영구적으로 저장된다.

 

1. PlayerPrefs 주요 특징

  1. 로컬 저장
    • PlayerPrefs는 운영체제의 레지스트리(Windows), plist(macOS, iOS), SharedPreferences(Android) 등에 데이터를 저장한다.
  2. 문자열, 정수, 실수 값만 저장 가능
    • string, int, float 타입만 저장할 수 있다.
    • 배열이나 Vector3, bool 등의 데이터는 직접 저장할 수 없으며, 문자열 변환(Serialize) 후 저장해야 한다.
  3. 간단한 데이터만 저장 추천
    • 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