본문 바로가기

유니티

유니티2D에서 게임 끝날 때 플레이어의 레벨, 체력을 저장했다가 게임 시작할 때 불러오는 방법은?

728x90
반응형

게임 끝날 때 플레이어의 레벨과 체력을 저장하고, 게임 시작할 때 불러오기 위해서는 플레이어의 정보를 저장할 데이터 파일이 필요합니다.

가장 간단한 방법은 PlayerPrefs를 사용하는 것입니다. PlayerPrefs는 유니티 엔진에서 제공하는 간단한 데이터 저장 방법입니다. PlayerPrefs를 사용하여 플레이어의 정보를 저장하고 불러오는 방법은 다음과 같습니다:

// 플레이어 정보 저장
void SavePlayerInfo()
{
	PlayerPrefs.SetInt("PlayerLevel", playerLevel);
	PlayerPrefs.SetInt("PlayerHealth", playerHealth);
	PlayerPrefs.Save();
}

// 플레이어 정보 불러오기
void LoadPlayerInfo()
{
	playerLevel = PlayerPrefs.GetInt("PlayerLevel");
	playerHealth = PlayerPrefs.GetInt("PlayerHealth");
}



위의 코드에서 SavePlayerInfo() 함수는 플레이어의 레벨과 체력을 PlayerPrefs에 저장합니다. 이 때 SetInt 함수를 사용하여 각각 PlayerLevel과 PlayerHealth라는 이름의 키와 함께 저장됩니다. Save() 함수는 PlayerPrefs에 저장된 데이터를 디스크에 즉시 기록하도록 합니다.

LoadPlayerInfo() 함수는 PlayerLevel과 PlayerHealth 키를 사용하여 PlayerPrefs에서 데이터를 불러옵니다. 이 때, GetInt 함수를 사용하여 저장된 값을 불러옵니다.

위의 함수들을 사용하여 게임이 끝날 때 SavePlayerInfo() 함수를 호출하여 플레이어의 정보를 저장하고, 게임이 시작될 때 LoadPlayerInfo() 함수를 호출하여 저장된 정보를 불러올 수 있습니다. 이를 게임의 시작과 끝에 호출하면 됩니다.

하지만, PlayerPrefs는 간단한 데이터 저장 방법이기 때문에 데이터가 복잡해지거나 보안적인 이슈가 있을 경우에는 다른 데이터 저장 방식을 고려해야 할 수도 있습니다.

SavePlayerInfo() 함수와 LoadPlayerInfo() 함수는 어떤 오브젝트에서든 실행시킬 수 있습니다.

만약 게임의 시작과 끝에서 이 함수들을 호출하려면, 가장 간단한 방법은 게임 매니저(Game Manager)나 게임 컨트롤러(Game Controller) 오브젝트를 만들어서 이를 수행하는 것입니다.

다음은 게임 매니저 오브젝트를 만들고 이를 통해 SavePlayerInfo() 함수와 LoadPlayerInfo() 함수를 호출하는 예시 코드입니다.

using UnityEngine;

public class GameManager : MonoBehaviour
{
	private int playerLevel;
	private int playerHealth;

private void Start()
{
	LoadPlayerInfo(); // 게임 시작시 플레이어 정보 불러오기
}

private void Update()
{
	if (Input.GetKeyDown(KeyCode.Escape))
	{
		SavePlayerInfo(); // 게임 종료시 플레이어 정보 저장하기
		Application.Quit(); // 게임 종료
	}
	
}

private void SavePlayerInfo()
{
	// 플레이어 정보 저장
	PlayerPrefs.SetInt("PlayerLevel", playerLevel);
	PlayerPrefs.SetInt("PlayerHealth", playerHealth);
	PlayerPrefs.Save();
}

private void LoadPlayerInfo()
{
	// 플레이어 정보 불러오기
	playerLevel = PlayerPrefs.GetInt("PlayerLevel");
	playerHealth = PlayerPrefs.GetInt("PlayerHealth");
}
	
}



위의 코드에서 GameManager 클래스는 MonoBehaviour를 상속받는 클래스입니다. Start() 함수에서는 게임이 시작될 때 LoadPlayerInfo() 함수를 호출하여 플레이어의 정보를 불러오도록 하였고, Update() 함수에서는 ESC 키를 누르면 SavePlayerInfo() 함수를 호출하여 플레이어의 정보를 저장하고 게임을 종료합니다.

위의 코드에서는 playerLevel과 playerHealth 변수를 GameManager 클래스 내에서 선언하여 사용하였습니다. 만약 다른 오브젝트에서도 이 변수들에 접근해야 한다면, 이 변수들을 public static 변수로 선언하여 다른 오브젝트에서도 접근할 수 있도록 해주는 것이 좋습니다.

 

728x90
반응형