게임엔진/Unity

[Unity] JSON 파일 저장 및 읽기

ShovelingLife 2023. 5. 11. 10:53

Global이라는 static 클래스를 사용했기 때문에 아래 함수들은 public static으로 되어있음. 이는 클래스 멤버 변수로 non-static으로 해도 무방.

 

저장

public static void CreateJsonFile(string createPath, string fileName, string jsonData)
    {
        FileStream fileStream = new FileStream(string.Format("{0}/{1}.json", createPath, fileName), FileMode.Create);
        byte[] data = Encoding.UTF8.GetBytes(jsonData);
        fileStream.Write(data, 0, data.Length);
        fileStream.Close();
    }

읽기

public static T LoadJsonFile<T>(string loadPath, string fileName)
    {
        FileStream fileStream = new FileStream(string.Format("{0}/{1}.json", loadPath, fileName), FileMode.Open);
        byte[] data = new byte[fileStream.Length];
        fileStream.Read(data, 0, data.Length);
        fileStream.Close();
        string jsonData = Encoding.UTF8.GetString(data);
        return JsonUtility.FromJson<T>(jsonData);
    }

저장방법

// 경로명 Application.persistentDataPath은 런타임 도중 삭제되지 않는 경로
var savePath = Application.dataPath + "/";

// 해당되는 경로에 폴더가 없다면 생성
if (!Directory.Exists(savePath))
    Directory.CreateDirectory(savePath);
    
// 아래 함수를 써서 파싱
JsonUtility.ToJson(저장할 데이터);

읽는방법

// 불러와서 그대로 대입
var 변수 = Global.LoadJsonFile<클래스 또는 구조체명>(경로, 파일 이름);

if (변수 != null)
	로컬 변수 = 변수;

 

출처 : https://lefthanddeveloper.tistory.com/15