Unity

Unity Json으로 저장, 로드하는 법

5_솔방울 2023. 1. 4.

Json은 정보를 저장할 수 있는 파일형식으로, xml의 느린 속도를 개선하기 위하여 만들어졌다.

그 대신 저장 규칙이 {"이름1":값1,"이름2":값2,"이름3":값3}으로, 이 형식에서 하나라도 틀리면 오류가 난다.

물론 유니티에서 지원해주는 Scriptable Object가 유니티상에선 월등히 편하긴 하지만, 서버와 연결되거나 할 땐 Json으로 저장하는 것이 서버와 연결할 때 도움이 된다.

 

Json에 덧붙여 조금 더 안전하게 저장을 하기 위하여 이전에 다루었던 AES128 암호화/복호화스크립트를 사용하였다.

코드 전문

using System.IO;
using UnityEngine;
public class JsonManager : MonoBehaviour
{
    private static string path = Application.dataPath + "/save.Json";
    public static void Save(Stat data)
    {
        string json = JsonUtility.ToJson(data);
        json = Crypto.AESEncrypt128(json); //이전에 작성한 암호화 기능 사용. 없어도 문제 안 됨
        File.WriteAllText(path, json);
    }
    public static T Load<T>()
    {
        string json = File.ReadAllText(path);
        json = Crypto.AESDecrypt128(json); //이전에 작성한 암호화 기능 사용. 없어도 문제 안 됨
        //Debug.Log(json);
        return JsonUtility.FromJson<T>(json);
    }
}

여담

c++에서 json 저장을 시도한 적 있었는데, 유니티에선 쉽게 사용할 수 있도록 UnityEngine의 클래스로 구현해 놓았다는 점이 정말 편리하고 유용하다는 것을 깨달았다. 그러나 구현한 코드를 보여주지 않는 점이 살짝 아쉽다.

'Unity' 카테고리의 다른 글

Unity Addressable을 활용하여 이미지 로드하기  (0) 2023.01.11
유니티 C# 버튼 가려짐 해결  (0) 2022.11.21

댓글