Search
Duplicate

데이터 저장 - PlayerPrefs

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Unity
Scrap
태그
기초
unity
9 more properties
모든 프로그램에 필수적인 데이터 저장.
Unity에서는 어떻게 저장할까?
Json, XML, CSV, SQL, ... 많은 방법이 있지만
"거창한거 필요 없어! 간단한게 필요해!"
라고 생각하신다면 PlayerPrefs 를 추천합니다.

PlayerPrefs란?

개념

유니티에서 제공해주는 데이터 관리 클래스
key - value 방식으로 저장
제공하는 변수 타입
int
float
string
bool

장점

간단한 저장
추가적인 구현 필요 없음
직관적이고 간단한 함수

단점

보안이 매우 취약함 → 게임 데이터가 해킹당할 수 있음.
한번에 1개의 값만 저장하고 불러올 수 있음
하나의 파일에 모든 값이 저장되어 있음

추천 기능

게임 설정
언어, 볼륨, ...

사용 방법

저장

void PlayerPrefs.SetInt(string key, int value);
void PlayerPrefs.SetFloat(string key, float value);
void PlayerPrefs.SetString(string key, string value);

불러오기

int PlayerPrefs.GetInt(string key[, defaultValue]);
float PlayerPrefs.GetFloat(string key[, defaultValue]);
string PlayerPrefs.GetString(string key[, defaultValue]);
→ key를 통해 value를 찾아 반환
만약, key값이 없다면 defaultValue 반환
bool PlayerPrefs.HasKey(string key[, defaultValue]);
해당 키 값의 존재 여부를 true/false 반환

삭제

void PlayerPrefs.DeleteAll();
void PlayerPrefs.DeleteKey(string key);

예제

→ 화살표를 눌러서 현재점수 -10/+10
→ 현재 점수
→ 최고 점수
→ 모든 점수 초기화
실행 흐름
1.
현재 점수, 최고 점수 초기화
void Start() { // 점수 초기화 nowScore = 0; heighScore = PlayerPrefs.GetInt("HeighScore", 0); // 점수 UI에 반영 updateScore(); }
C#
복사
PlayerPrefs.GetInt("HeighScore", 0);
→ 키가 "HeighScore"인 value를 불러오는데,
만약 존재하지 않으면 0값을 반환.
2.
점수 변화
//점수 증가, 감소 public void changeScore(int value) { this.nowScore += value; // 최고점수 갱신 if (nowScore > heighScore) { heighScore = nowScore; PlayerPrefs.SetInt("HeighScore", this.heighScore); } // 점수 UI에 반영 updateScore(); }
C#
복사
좌측 화살표를 누르면 -10
우측 화살표를 누르면 +10
PlayerPrefs.SetInt("HeighScore", this.heighScore);
→ 키가 "HeighScore"인 값을 this.heighScore 로 저장
3.
점수 초기화
public void resetScore() { nowScore = 0; heighScore = 0; PlayerPrefs.SetInt("HeighScore", heighScore); updateScore(); }
C#
복사
heightScore 를 0으로 초기화 한 후,
PlayerPrefs.SetInt("HeighScore", this.heighScore);
→ 키가 "HeighScore"인 값을 this.heighScore 로 저장
실행 결과
재시작 하면 최고 점수가 남아있음을 확인
전체 코드

저장 경로

macOS: ~\Library\Preferences
Windows: HKCU\Software\[company name]\[product name]
Linux: ~\.config\unity3d\[company name]\[product name]
Android: \data\data\[pkg-name]\shared_prefs\[pkg-name].xml
iOS: \Library\Preferences\[bundle identifier].plist
WebGL: brower's indexedDB API
참고한 사이트