본문 바로가기

Unity/Coding

PlayerPrefs

  • 가장 간단한 저장 시스템.
  • PlayerPrefs는 별도의 암호화 없이 로컬 레지스트리에 저장된다.
  • 유저의 암호와 같이 중요한 데이터에는 사용하지 말 것. (중요한 데이터를 서버에 저장하자)
  • 환경설정(음량 조절, 기타 옵션) 같은 것들을 저장하기 용이하다.
  • 정수형, 실수형, 문자열 형식만 지원한다.
  • 이보다 큰 데이터의 경우 이 3가지 데이터로 나눠서 저장해야 하는 불편함이 있다.
  • 딕셔너리나 헤쉬맵과 같이 key와 value의 형태로 데이터를 저장한다.
  • key의 값은 string이며 value를 찾기 위한 식별자로 사용된다.
  • 중복된 key와 다른 value를 입력했다면 덮어쓰기로 인해 가장 마지막 value가 저장된다.

PlayerPrefs 함수

입력 출력
PlayerPrefs.SetInt PlayerPrefs.GetInt
PlayerPrefs.SetFloat PlayerPrefs.GetFloat
PlayerPrefs.SetString PlayerPrefs.GetString

입력 함수들:

  • SetInt(string key, int value) : int 값을 해당 key에 저장한다.
  • SetFloat(string key, float value) : float 값을 해당 key에 저장한다.
  • SetString(string key, string value) : string 값을 해당 key에 저장한다.

출력 함수들:

  • GetInt(string key) : key에 저장된 int 값을 불러온다.
  • GetFloat(string key) : key에 저장된 float 값을 불러온다.
  • GetString(string key) : key에 저장된 string 값을 불러온다.

기타 함수들:

  • Save() : 수정된 모든 preferences를 파일에 저장한다.
  • HasKey(string key) : key가 있는지 확인한다.
  • DeleteKey(string key) : key에 저장된 value를 삭제한다.
  • DeleteAll() : 모든 데이터를 삭제한다.

예시:

public void SaveData()
{
  PlayerPrefs.SetString("Input", inputField.text);
}

public void LoadData()
{
  inputField.text = PlayerPrefs.GetString("Input");
}

public void DeleteData()
{
  PlayerPrefs.DeleteKey("Input");
  PlayerPrefs.DeleteAll();
}

PlayerPrefs 저장 위치

 

Playerprefs는 데이터를 Window에서 Registery에 저장한다.

Window > 실행 > regedit

HKEY_CURRENT_USER/Software/Unity/UnityEditor/CompanyName/ProjectName

 

안드로이드는 안드로이드 api에서 제공하는 SharedPreferences에 저장한다. 


정리:

  • 암호화 없이 로컬에 저장된다는 점이 쓰기 어렵게 만든다.
  • 데이터 타입의 제한도 큰 감점 요소.
  • 그냥 Json파일로 저장하는게 나을지도?
  • Option이나 Menu와 관련된 데이터를 저장하는 용도로 괜찮아 보인다.
  • 빠르게 프로토타이핑 할 때는 사용해도 좋겠다.

PlayerPrefs - Unity Documents: docs.unity3d.com/kr/530/ScriptReference/PlayerPrefs.html

 

UnityEngine.PlayerPrefs - Unity 스크립팅 API

Stores and accesses player preferences between game sessions.

docs.unity3d.com

 

'Unity > Coding' 카테고리의 다른 글

Addressables in Unity  (0) 2023.01.11
JSON in Unity  (1) 2022.12.30