コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity プロジェクトに独自のデータを保存できる「EditorUserSettings.SetConfigValue」

概要

using System;
using UnityEditor;
using UnityEngine;

[Serializable]
public sealed class Data
{
    public int    Id;
    public string Name;
}

public sealed class Example : EditorWindow
{
    [MenuItem( "Tools/Open" )]
    private static void Open()
    {
        GetWindow<Example>();
    }

    private void OnGUI()
    {
        var key   = "hoge";
        var json1 = EditorUserSettings.GetConfigValue( key );
        var data  = JsonUtility.FromJson<Data>( json1 ) ?? new Data();

        data.Id   = EditorGUILayout.IntField( "Id", data.Id );
        data.Name = EditorGUILayout.TextField( "Name", data.Name );

        var json2 = JsonUtility.ToJson( data );
        EditorUserSettings.SetConfigValue( key, json2 );
    }
}
  • EditorUserSettings.SetConfigValue を使用することで
    Unity プロジェクトに独自のデータを保存できます
    • EditorUserSettings.GetConfigValue で読み込めます
  • EditorPrefs はプロジェクト外(レジストリ)にデータが保存されますが
    EditorUserSettings.SetConfigValue はプロジェクトにデータが保存されます
    • そのため、他のプロジェクトでも使用したいデータは EditorPrefs で保存、
      このプロジェクトでのみ使用するデータは EditorUserSettings.SetConfigValue で保存、
      という使い分けが可能です
  • EditorUserSettings.SetConfigValue で保存したデータは
    「Library/EditorUserSettings.asset」に保存されます
    • そのため、Library フォルダを削除すると保存したデータは消えます