Unity에서 PlayerPrefs를 사용하여 게임 진행 상황을 저장하는 방법

Unity의 PlayerPrefs를 사용하면 게임 진행 상황을 포함하여 게임의 플레이어 기본 설정을 저장하고 액세스할 수 있습니다. 이 문서에서는 전체 코드 예제와 함께 PlayerPrefs를 사용하여 게임 진행 상황을 저장하는 방법을 알아봅니다.

구현원리

PlayerPrefs는 로컬 하드 드라이브에 플레이어 기본 설정을 저장하는 Unity의 키-값 저장 방법입니다. PlayerPrefs를 사용하면 애플리케이션의 다양한 장면 간에 데이터를 저장하고 읽을 수 있습니다.

게임 진행 상황을 저장할 때 PlayerPrefs.SetInt() 메서드를 사용하여 PlayerPrefs에 정수 값을 저장할 수 있습니다. 예를 들어, 다음에 플레이할 때 플레이어가 마지막으로 중단한 레벨을 로드할 수 있도록 PlayerPrefs에 현재 레벨의 번호를 저장할 수 있습니다.

코드 예

다음은 PlayerPrefs를 사용하여 게임 진행 상황을 저장하는 전체 코드 예제입니다.

// 게임 진행 상황 저장
int currentLevel = 4; // 현재 레벨
PlayerPrefs.SetInt("CurrentLevel", currentLevel);

// 게임 진행 상황 읽기
int selectedLevel = PlayerPrefs.GetInt("CurrentLevel", 1); // 없는 경우 이전 레벨 저장되면 기본값은 1입니다
. Debug.Log("현재 레벨: " +SavedLevel);


위의 코드 예제에서는 먼저 PlayerPrefs.SetInt() 메서드를 사용하여 PlayerPrefs에 현재 레벨의 번호를 저장합니다. 그런 다음 PlayerPrefs.GetInt() 메서드를 사용하여 저장된 게임 진행 상황을 읽고 인쇄합니다.

이점

  • 사용하기 쉬움: PlayerPrefs는 사용하기 매우 쉽고 로컬 하드 드라이브에 데이터를 쉽게 저장할 수 있습니다.
  • 크로스 씬 스토리지: PlayerPrefs를 사용하면 애플리케이션의 다양한 씬 간에 데이터를 저장하고 읽을 수 있습니다.
  • 크로스 플랫폼 지원: PlayerPrefs는 크로스 플랫폼이며 Windows, Mac 및 모바일 장치에서 사용할 수 있습니다.

결점

  • 대용량 데이터에는 적합하지 않음: PlayerPrefs는 소량의 데이터를 저장하는 데 적합하지만 대용량의 데이터를 저장하는 데는 적합하지 않습니다. 많은 양의 데이터를 저장해야 하는 경우 다른 저장 방법을 사용해야 합니다.
  • 안전하지 않음: PlayerPrefs는 로컬 하드 드라이브에 저장되므로 악의적인 액세스나 변조의 위험이 있습니다. 따라서 중요한 정보를 PlayerPrefs에 저장하지 않는 것이 좋습니다.

기타 보존 옵션

PlayerPrefs는 Unity에서 유용한 저장 방법이지만, 많은 양의 데이터를 저장해야 하거나 더 높은 보안이 필요한 경우 로컬 파일이나 데이터베이스와 같은 다른 저장 방법을 사용하는 것을 고려할 수 있습니다. 다음은 로컬 파일을 사용하여 게임 진행 상황을 저장하는 전체 코드 예제입니다.

System.IO 사용;
UnityEngine 사용;

공용 클래스 GameSaveManager : MonoBehaviour
{ 개인 문자열 savePath; private void Awake() { savePath = Application.pertantDataPath + "/gameSave.dat"; } public void SaveGame(int currentLevel) { BinaryWriter 작가 = new BinaryWriter(File.Open(savePath, FileMode.Create)); 작가.쓰기(현재레벨); 작가.닫기(); } public int LoadGame() { if (!File.Exists(savePath)) { return 1; } BinaryReader 리더 = new BinaryReader(File.Open(savePath, FileMode.Open)); int currentLevel = reader.ReadInt32();























리더.닫기();

현재레벨을 반환합니다.
}
}


위의 코드 예제에서는 BinaryWriter 및 BinaryReader를 사용하여 게임 진행 상황을 로컬 파일에 저장하는 GameSaveManager 클래스를 정의합니다. GameSaveManager.SaveGame() 메서드를 사용하여 게임 진행 상황을 저장하고 GameSaveManager.LoadGame() 메서드를 사용하여 게임 진행 상황을 로드할 수 있습니다.

로컬 파일 저장소에도 크로스 플랫폼 저장소를 지원하지 않는 등의 단점이 있다는 점에 유의해야 합니다. 따라서 보관방법을 선택할 때에는 구체적인 상황에 따라 선택해야 합니다.

using UnityEngine;

public class GameSaveManager : MonoBehaviour
{ private void Start() { // 게임 진행 상황 저장 int currentLevel = 4; // 현재 레벨 PlayerPrefs.SetInt("CurrentLevel", currentLevel); // 게임 진행 상황 읽기 int selectedLevel = PlayerPrefs . GetInt("CurrentLevel", 1); // 이전에 저장되지 않은 경우 기본값은 1입니다. Debug.Log("현재 레벨: " + selectedLevel); // 로컬 파일을 사용하여 게임 진행 상황 저장 GameSaveManager gameSaveManager = new GameSaveManager () ; gameSaveManager.SaveGame(currentLevel); int loadingLevel = gameSaveManager.LoadGame(); Debug.Log("현재 레벨: " + loadingLevel); } } public class GameSaveManager { private string savePath;






















public GameSaveManager()
{ savePath = Application.pertantDataPath + "/gameSave.dat"; } public void SaveGame(int currentLevel) { BinaryWriter 작가 = new BinaryWriter(File.Open(savePath, FileMode.Create)); 작가.쓰기(현재레벨); 작가.닫기(); } public int LoadGame() { if (!File.Exists(savePath)) { return 1; } BinaryReader 리더 = new BinaryReader(File.Open(savePath, FileMode.Open)); int currentLevel = reader.ReadInt32(); 리더.닫기(); 현재레벨을 반환합니다. } }
























9489f24322247d55613a3e5e63f10e6e.jpeg


Supongo que te gusta

Origin blog.csdn.net/shguxudong11/article/details/129536197
Recomendado
Clasificación