PlayerPrefs
이번 진행한 프로젝트는 러닝액션 게임으로 획득 점수로 겨루는 게임이다. 점수를 획득하고 계산하는 기능은 그다지 어렵지 않다. 하지만 과연 여태 획득한 점수, 그 중에서 최고 점수를 기록하고 싶을 때, 어떤 방법을 사용하는 것이 좋을까?
간단한 데이터 저장하기
Unity에서 유저의 데이터를 저장하기 위해 JSON 파일을 많이 사용한다. 이는 직렬화를 통해 저장된 데이터의 보안을 확보할 수 있다는 장점이 있지만, 우리의 프로젝트와 같이 간단한 데이터를 저장하기 위해 사용하기엔 구현이 복잡하다. 따라서 우리는 PlayerPrefs를 사용하여 간단한 데이터를 저장하기로 결정했다.
키워드와 데이터
PlayerPrefs를 통해 데이터를 저장하기 위해서는 키워드를 사용해야 한다. 말 그대로 저장된 데이터에 접근할 수 있는 열쇠가 되는 단어이다.
float bestScore = 3.0f;
PlayerPrefs.SetFloat("BestScore", bestScore);
float loadedBestScore = PlayerPrefs.GetFloat("BestScore");
위 예시 코드에서 bestScore 변수를 3.0f로 초기화 한 후, BestScore 키워드를 통해 PlayerPrefs에 bestScore 값을 저장하였다. 상위 2열의 코드를 진행한 이후 불러온 loadedBestScore 값은 3.0f가 된다.
하지만 만약 두 번째 줄의 코드를 수행하지 않고 loadedBestScore를 호출한다면 어떻게 될까? BestScore 키워드를 사용하여 저장된 값이 없으므로 문제가 발생하게 된다.
이를 방어하기 위한 코드는 생각보다 간단하다.
float bestScore = 3.0f;
PlayerPrefs.SetFloat("BestScore", bestScore);
float loadedBestScore = PlayerPrefs.GetFloat("BestScore", 0.0f);
위와 같이 PlayerPrefs.GetFloat("BestScore", 0.0f); 를 사용한다면 BestScore 키워드를 사용하여 저장된 값을 불러오고, 만약 저장된 값이 없다면 0.0f를 불러온다는 뜻이다. 여기서 0.0f를 기본값이라고 한다.
물론 JSON을 이용한 직렬화된 데이터 저장 방식보다 보안에 취약하다는 단점이 있지만, 간단하게 데이터를 저장해야 할 경우에 유용하게 사용할 수 있는 기능이다.
24.06.10 Today I Learned
'Today I Learned' 카테고리의 다른 글
[TIL][Unity] 확률 가중치 부여하기 (0) | 2024.06.12 |
---|---|
[TIL][Unity] 오브젝트 충돌 시 효과음 출력 (0) | 2024.06.07 |
[TIL][Unity] 인터페이스 (0) | 2024.06.05 |
[TIL][Unity] 싱글톤 패턴 (0) | 2024.06.04 |
[TIL][Unity] 오브젝트 풀링 (0) | 2024.06.03 |