
변수들은 메모리에 저장되기 때문에 프로그램을 끄는 순간 변수에 저장되어있는 데이터는 휘발됩니다.
오늘은 PlayerPrefs를 활용하여 메모리의 변수들을 SSD HDD 등의 보조기억장치에 저장하는 방법을 알아보겠습니다.
1. PlayerPrefs란?
PlayerPrefs
PlayerPrefs는 Player Preferences(플레이어 설정)의 줄임말 입니다.
주로 옵션(볼륨, 밝기 등)을 저장할 때 사용하지만, 이를 통해 게임에서 사용되는 여러 변수들을 저장하고 불러올 수도 있습니다.
저장 방식
저장 방식은 ‘Key-Value’방식을 사용하며, Int, Float, String 타입의 변수들을 저장 가능합니다.
PlayerPrefs.SetInt("BestScore", 1000);‘BestScore’라는 key에 1000 (Value)를 저장하는 식입니다.
저장 위치
PlayerPrefs의 SetInt, SetFloat, SetString 등을 통해 저장된 데이터는 각 OS별로 다른 위치에 저장됩니다.
- Windows – 레지스트리
- Mac/IOS – plist파일
- Android – XML 파일
2. PlayerPrefs 저장
Set 키워드
PlayerPrefs는 SetInt, SetFloat, SetString를 통해 변수를 저장할 수 있습니다.
PlayerPrefs.Set키워드(“Key”, Value); 형태로 작성 후 마지막에 Save() 함수를 호출하면 안전하게 데이터를 저장할 수 있습니다.
// 점수 저장
PlayerPrefs.SetInt("BestScore", 1000);
// 볼륨 저장
PlayerPrefs.SetFloat("BGM_Volume", 0.5f);
// 플레이어 이름 저장
PlayerPrefs.SetString("PlayerName", "Hero");
// Save 호출
PlayerPrefs.Save();3. PlayerPrefs 불러오기
Get 키워드
PlayerPrefs로 저장한 값을 불러오려면 GetInt, GetFloat, GetString을 사용하면 됩니다.
Set과 마찬가지로 Key-Value 형태로 불러오지만, Get에서 Value는 Key에 저장된 데이터가 없을 때 불러오는 값으로 사용됩니다.
// "BestScore" 키가 없으면 0
int score = PlayerPrefs.GetInt("BestScore", 0);
// "PlayerName" 키가 없으면 "Guest" 반환
string name = PlayerPrefs.GetString("PlayerName", "Guest");4. PlayerPrefs 삭제
DeleteKey
DeleteKey를 사용하여 특정 키의 데이터를 삭제할 수 있습니다
PlayerPrefs.DeleteKey("BestScore");위 코드의 경우 ‘BestScore’ Key를 삭제합니다.
DeleteAll함수
DeleteAll 함수를 사용하면 PlayerPrefs에 저장되어있는 모든 데이터를 삭제합니다.
PlayerPrefs.DeleteAll();5. 단점
PlayerPrefs의 저장 위치를 보면 짐작할 수 있듯 레지스트리 편집, 안드로이드 루팅 등 PlayerPrefs는 보안에 매우 취약합니다.
따라서 보안이 중요한 게임이나, 중요한 데이터의 경우 Json, Binary등을 통해 암호화하여 저장하는 방법을 사용해야 됩니다.
PlayerPrefs는 설정값이나, 데이터 변조를 자유롭게 허락 할 수 있는 싱글플레이 게임에서 임시로 데이터를 저장하는 경우 사용하시면 좋습니다.
6. 정리
| 용도 | 키워드 |
| 저장 | SetInt, SetFloat, SetString |
| 불러오기 | GetInt, GetFloat, GetString |
| 삭제 | DeleteKey, DeleteAll() |



