2025/Unity

UnityEditor : 스크립터블오브젝트 <-> json 상호 변환기

rimugiri 2025. 2. 25. 23:38
728x90

코드로 항상 구현하기 귀찮아서 툴로 만들어 버리자

 

1. 사용방법

1) 해당하는 scriptable오브젝트를 프로젝트 창에서 선택한다.

2) save를 눌러주면 Datas라는 폴더에 데이터에 대한 json파일이 생성되어있다.

3) Load를 눌러주면 해당 ScriptableObject에 json데이터가 저장되어 있다.

 

2. 구현

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;


public class SaveScriptableObjectToJsonEditor : Editor
{
    static string savePath = Application.dataPath + "/Datas";

    [MenuItem("ScriptableObject/Save")]
    public static void Save()
    {
        Object obj = Selection.activeObject;

        if (obj == null) return;

        if (obj is not ScriptableObject) return;

        obj = obj as ScriptableObject;

        string json = JsonUtility.ToJson(obj, true);
        string path = System.IO.Path.Combine(savePath, obj.name + ".json");

        if(!System.IO.Directory.Exists(savePath))
        {
            System.IO.Directory.CreateDirectory(savePath);
        }

        System.IO.File.WriteAllText(path, json);

        Debug.Log($"Save Complete : {json}");
        AssetDatabase.Refresh();
    }

    [MenuItem("ScriptableObject/Load")]
    public static void Load()
    {
        Object obj = Selection.activeObject;

        if (obj == null) return;
        if (obj is not ScriptableObject) return;

        obj = obj as ScriptableObject;
        string path = System.IO.Path.Combine(savePath, obj.name + ".json");
        string json = System.IO.File.ReadAllText(path);

        JsonUtility.FromJsonOverwrite(json, obj);
        AssetDatabase.Refresh();
    }
}

 

 

728x90