📘프로그래밍/Unity

[Unity] 01 PlayerPrefs

bohemdev1 2024. 11. 15. 21:02

정의

 

게임 세션 간에 플레이어의 기본적인 설정을 로컬 레지스트리에 저장하는 클래스

 

 

 

의의

 

게임에는 시스템 설정값과 같이 해당 값이 게임의 시작과 종료에 상관 없이 유지되는 것이 편리한 비휘발성 데이터가 존재합니다. 이러한 데이터는 PlayerPrefs 를 통해 사용자 로컬 저장소에 저장하고 관리하는 것이 쾌적한 게임 환경 구성을 위해 권장됩니다. 하지만 PlayerPrefs 가 사용하는 저장소는 사용자의 로컬에 위치하는 만큼 보안에 취약할 수 밖에 없습니다. 따라서 재화, 경험치 수준과 같이 보안에 민감한 데이터는 되도록이면 PlayerPrefs 로 취급하지 않습니다.

 

 

 

기능

 

 

관련 함수

 

▼ PlayerPrefs 클래스 함수

DeleteAll 환경 설정에서 모든 키와 값을 제거합니다.
DeleteKey PlayerPrefs에서 주어진 키를 제거합니다. 키가 존재하지 않으면 DeleteKey는 영향을 미치지 않습니다.
GetFloat 환경 설정 파일에 키에 해당하는 값이 있으면 해당 값을 반환합니다.
GetInt 환경 설정 파일에 키에 해당하는 값이 있으면 해당 값을 반환합니다.
GetString 환경 설정 파일에 키에 해당하는 값이 있으면 해당 값을 반환합니다.
HasKey 주어진 키가 PlayerPrefs에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
Save 수정된 모든 설정값을 저장합니다.
SetFloat 주어진 키로 식별된 속성의 float 값을 설정합니다. PlayerPrefs.GetFloat를 사용하여 이 값을 검색할 수 있습니다.
SetInt 주어진 키로 식별된 속성에 대한 int 값을 설정합니다. PlayerPrefs.GetInt를 사용하여 이 값을 검색할 수 있습니다.
SetString
주어진 키로 식별된 속성에 대한 string 값을 설정합니다. PlayerPrefs.GetString을 사용하여 이 값을 검색할 수 있습니다.

 

 

 

사용 예시

 

다음은 사용자의 키보드 'S' 를 입력받으면 PlayerPrefs 클래스를 통해 사용자의 로컬 레지스트리에 데이터를 저장하고,  키보드 'L' 을 입력받으면 저장한 값을 불러오는 예시입니다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    void Update()
    {
    	// 키보드 S를 입력받으면 PlayerPrefs에 데이터 저장
        if (Input.GetKeyDown(KeyCode.S))
        {   
            PlayerPrefs.SetInt("UserVolume", 3);
            PlayerPrefs.SetFloat("UserMouseSensitivity", 1.2f);

            Debug.Log("시스템 설정값 저장 완료");
        }

	// 키보드 L을 입력받으면 PlayerPrefs의 데이터 호출
        if (Input.GetKeyDown(KeyCode.L))
        {   
            int a_UserVolume = PlayerPrefs.GetInt("UserVolume", 0);
            float a_UserMouseSensitivity = PlayerPrefs.GetFloat("UserMouseSensitivity", 1.0f);

            Debug.Log($"볼륨: {a_UserVolume}, 마우스 감도: {a_UserMouseSensitivity}");
        }
    }
}

/*
시스템 설정값 저장 완료
볼륨: 3, 마우스 감도: 1.2
*/

 

 

 


 

 

Unity - Scripting API: PlayerPrefs

Unity stores PlayerPrefs in a local registry, without encryption. Do not use PlayerPrefs data to store sensitive data. Unity stores PlayerPrefs data differently based on which operating system the application runs on. In the file paths given on this page,

docs.unity3d.com