게임 화면상에 입력을 할 수 있게 해주는 필드를 사용할땐
[SerializeField] private TMP_InputField depositInput;
Text 가 아닌 TMP_InputField 을 사용해줘야한다
게임 매니저에서 데이터를 저장 하려면 json 을 이용하여 저장한다
private string saveFile;
private void Awake()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
saveFile = Path.Combine(Application.persistentDataPath, "userData.json");
// 여기에 디버그를 하면 파일저장위치 확인가능
uiManager = GameObject.FindWithTag("UIManager").GetComponent<UIManager>();
LoadUserData();
}
public void SaveUserData()
{
string jsonData = JsonUtility.ToJson(userData, true);
File.WriteAllText(saveFile, jsonData);
Debug.Log("데이터 저장 완료: " + saveFile);
}
public void LoadUserData()
{
if (File.Exists(saveFile))
{
string jsonData = File.ReadAllText(saveFile);
userData = JsonUtility.FromJson<UserData>(jsonData);
Debug.Log("데이터 로드 완료");
}
else
{
Debug.Log("저장된 데이터 없음, 기본값 설정");
userData = new UserData("my", 0, 0);
SaveUserData();
}
}
위와같은 코드가 필요하며
아래의 코드처럼 일부 코드를 동기화 시켜줘야한다
public void AddHandCash(float amount)
{
curCash += amount;
uiManager.AddCash(curCash);
Debug.Log("amount:" + curCash);
}
public void Addbank(float amount)
{
curBankBalance += amount;
uiManager.AddBank(curBankBalance);
Debug.Log("amount:" + curBankBalance);
}
// 위의 코드를 아래와 같이 바꿔줘야한다
public void AddHandCash(float amount)
{
userData.handCash += amount;
uiManager.AddCash(userData.handCash);
SaveUserData();
Debug.Log("소지금 변경: " + userData.handCash);
}
public void Addbank(float amount)
{
userData.bankBalance += amount;
uiManager.AddBank(userData.bankBalance);
SaveUserData();
Debug.Log("은행 잔액 변경: " + userData.bankBalance);
}
이후 다른 스크립트에 gameManager.SaveUserData(); 로 정보를 불러와 업데이트 해주어야한다