Unity씬과 데이터

PlayerPrefs 기본

간단한 설정값과 진행 상태를 저장할 때 자주 쓰는 `PlayerPrefs` 기본 패턴과 한계를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
PlayerPrefs.SetFloat("music_volume", 0.8f);
float volume = PlayerPrefs.GetFloat("music_volume", 1f);
PlayerPrefs.Save();

설명

  • PlayerPrefs는 작은 설정값을 저장하고 다시 불러올 때 가장 손쉬운 내장 저장 방식입니다.
  • 정수, 실수, 문자열만 직접 저장할 수 있어서 볼륨, 난이도, 마지막 해금 여부 같은 간단한 값에 잘 맞습니다.
  • 복잡한 세이브 파일 구조나 보안이 중요한 데이터에는 한계가 있습니다.
  • 기본값을 함께 주면 저장된 값이 없을 때도 안전하게 처리할 수 있습니다.

짧은 예제

csharp
[SerializeField] private AudioSource bgm;

private void Start()
{
    float volume = PlayerPrefs.GetFloat("bgm_volume", 0.5f);
    bgm.volume = volume;
}

public void SaveVolume(float value)
{
    PlayerPrefs.SetFloat("bgm_volume", value);
    PlayerPrefs.Save();
}

빠른 정리

항목설명
SetInt/SetFloat/SetString값 저장
GetInt/GetFloat/GetString값 불러오기
기본값저장값이 없을 때 대체값 사용
Save()즉시 저장 반영
적합한 용도옵션, 간단한 진행 상태

주의할 점

PlayerPrefs는 작은 설정 저장에 적합하지, 복잡한 인벤토리나 대규모 세이브 데이터 저장소는 아닙니다. 용도를 넘어서면 구조가 금방 불편해집니다.

참고 링크

1 sources