가장 기본적으로 저장하는 방법은 PlayerPrefs을 사용해서 저장하는 방법이 있습니다.
이것은 기본 데이터를 문자열키를 이용해서 같이 저장하게 해주는것인데요, 저장할 데이터가 작고 간단하다면 이 방법을 사용하는것이 가장 무난하고 좋습니다.
사용법은 아래의 코드를 살펴보세요.
using UnityEngine;
using System.Collections;
public class csTest : MonoBehaviour
{
int currentScore;
int highScore;
string currentPlayerName;
string highScorePlayerName;
void SaveData()
{
// 이런식으로 스트링키를 이용해서 값을 저장해줍니다.
PlayerPrefs.SetInt("Score", currentScore);
PlayerPrefs.SetInt("HighScore", currentScore);
PlayerPrefs.SetString("HighScoreName", currentPlayerName);
}
void GetData()
{
// 필요한 데이터를 불러올때는 이렇게 키값으로 불러오게 되죠.
highScore = PlayerPrefs.GetInt("HighScore");
highScorePlayerName = PlayerPrefs.GetString("HighScoreName", "N/A");
}
}
이렇게 구성후 정적클래스를 만들어서 관리하거나 싱글턴 클래스를 만들어서 관리할 수 있습니다. 그런데 정적클래스로 만들면 인스펙터에서는 값을 조절할 수 없다는 단점이 있죠.
인스펙터와 코드 모두에서 값을 조절하고 싶은 경우엔 아래의 예제 코드처럼 DontDestroyOnLoad 함수를 이용해서 가능하게 만들 수 있습니다.
using UnityEngine;
using System.Collections;
public class csTest : MonoBehaviour
{
public static csTest current;
public Transform somePrefabs;
public int score;
public string playerName;
void Awake()
{
if (current != null && current != this)
{
Destroy(gameObject);
}
else
{
DontDestroyOnLoad(gameObject);
current = this;
}
}
}
// 접근할때는 요렇게 접근합니다. Transform x = csTest.current.somePrefabs;
댓글 없음:
댓글 쓰기