- 가장 간단한 저장 시스템.
- 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
'Unity > Coding' 카테고리의 다른 글
Addressables in Unity (0) | 2023.01.11 |
---|---|
JSON in Unity (1) | 2022.12.30 |