본문 바로가기

Unity/정보

[Unity 유니티] 유니티에서 Json으로 데이터 관리하기 - 저장 (1)

유니티와 Json

게임을 개발하다 보면 데이터를 저장하고 불러와야 할 때가 많다. 유니티에서는 Json 형식으로 데이터를 쉽게 저장하고 불러올 수 있는 기능을 제공하므로 이를 잘 활용하면 관리하기가 수월해진다. Json은 데이터를 키-값 쌍으로 구조화해 가독성이 좋고, 쉽게 파싱할 수 있는 형식이다. 유니티에서는 JsonUtility 클래스를 통해 Json을 쉽게 다룰 수 있다.


1. JsonUtility를 이용한 Json 변환

Unity는 JsonUtility라는 유틸리티 클래스를 제공해 C# 객체를 Json 형식으로 변환할 수 있다.

using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int score;
}

public class JsonExample : MonoBehaviour
{
    void Start()
    {
        PlayerData playerData = new PlayerData
        {
            playerName = "Player1",
            score = 100
        };

        // 객체를 Json으로 변환
        string jsonData = JsonUtility.ToJson(playerData);
        Debug.Log("Json 데이터: " + jsonData);

        // Json을 객체로 다시 변환
        PlayerData loadedData = JsonUtility.FromJson<PlayerData>(jsonData);
        Debug.Log("불러온 데이터: " + loadedData.playerName + ", " + loadedData.score);
    }
}

설명

  • JsonUtility.ToJson : C# 객체를 Json 문자열로 변환해준다.
  • JsonUtility.FromJson : Json 문자열을 C# 객체로 변환해준다.

2. Json 파일로 저장하기

Json 데이터를 파일로 저장하는 방법이다. 아래 코드는 Json 데이터를 로컬 파일에 저장하는 방법을 보여준다.

using System.IO;
using UnityEngine;

public class JsonFileExample : MonoBehaviour
{
    private string filePath;

    void Start()
    {
        filePath = Application.persistentDataPath + "/playerData.json";
        
        // 데이터 저장하기
        PlayerData playerData = new PlayerData { playerName = "Player1", score = 100 };
        SaveData(playerData);
    }

    void SaveData(PlayerData data)
    {
        string jsonData = JsonUtility.ToJson(data);
        File.WriteAllText(filePath, jsonData);
        Debug.Log("Json 파일로 저장됨: " + filePath);
    }
}

설명

  • File.WriteAllText : 지정된 경로에 Json 데이터를 파일로 저장한다.
  • Application.persistentDataPath : 플랫폼에 상관없이 사용할 수 있는 데이터 경로를 제공한다.

마무리

이와 같이 Unity에서 Json 데이터를 사용하면 게임 데이터를 파일로 쉽게 저장할 수 있다. Json 포맷은 가볍고 사람이 읽기 쉬워 데이터를 다루기 편리하다는 장점이 있다.