카테고리 없음

TMP_InputField 와 json

rxo2 2025. 3. 26. 20:58

게임 화면상에 입력을 할 수 있게 해주는 필드를 사용할땐

[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(); 로 정보를 불러와 업데이트 해주어야한다