TIL(24-06-12) - 유니티 직렬화 - JSON을 이용해 데이터 저장하기(Unity)

임재훈·2024년 6월 12일

Unity

목록 보기
15/20

직렬화

[System.Serializable] // 직렬화
public class UserData
{
    public float hp;
    public int lv;
    public string nickname;
}

public class Test : MonoBehaviour
{
    private void Start()
    {
        UserData data = new UserData();
        data.hp = 100;
        data.lv = 4;
        data.nickname = "test";

        // JSON으로 직렬화
        string jsonData = JsonUtility.ToJson(data);
    }
}
  • 저장하고 싶은 데이터를 모아 하나의 클래스로 만든다.
  • 꼭 [System.Serializable] 을 붙여 직렬화 하기!

역직렬화

public class Test : MonoBehaviour
{
    private void Start()
    {
        ...

        // UserData 타입으로 역직렬화
        UserData loadData = JsonUtility.FromJson<UserData>(jsonData);
    }
}
  • 직렬화 했던 타입으로 역직렬화

데이터 저장하기

public class Test : MonoBehaviour
{
    private void Start()
    {
        ...

        // 데이터 저장
        File.WriteAllText(Application.persistentDataPath + "/filename.txt", jsonData); 
    }
}
  • 데이터 저장 경로를 임의로 정해주면 위험하다.
  • Application.persistentDataPath: 유니티에서 제공하는 기능으로 현재 컴퓨터 상황에 다라 알맞게 경로를 세팅해줌.
  • + "/filename.txt": txt 파일로 원하는 이름으로 작성

데이터 불러오기

public class Test : MonoBehaviour
{
    private void Start()
    {
        ...
        
        // 데이터 불러오기
        string load = File.ReadAllText(Application.persistentDataPath + "/filename.txt");
    }
}
  • 저장했던 경로에서 데이터를 불러온다.

활용

  • 데이터 직렬화 -> 데이터 저장 -> 데이터 불러오기 -> 데이터 역직렬화
  • 이러한 순으로 원하는 데이터를 저장하고 불러올 수 있다.
profile
초심을 잃지 말자!

0개의 댓글