【Unity】ScriptableSingletonでEditorWindowで設定したパラメータを共有する

DEVELOP, Unity

UnityのEditorWindowって便利ですよね。独自の拡張が出来たり簡単なツールならサクッとGUIで作れてしまいます。しかし気をつけておかないといけない部分があって、そこをお話しします。

EditorWindowは物忘れが激しい

はい。これは何が言いたいのかというと、EditorWindow はstatic な変数を
ゲーム再生時やビルド時には忘れるという性質を持っています。 そのため、ちょっとEditorWindowでパラメータを設定して実行…反映されません。

どうしたものか・・・しかしそこはUnity。 ちゃっかり対応できる機能が用意さしてくれています。ScriptableSingleton です。

使用方法

まずは受け渡しするためのデータクラスを用意します。

#if UNITY_EDITOR
public class DebugSettings : UnityEditor.ScriptableSingleton<DebugSettings>
{
    public bool isDisableLog;
}
#endif

こんな感じです。EditorWindow側は

ScriptableSingleton<Frameworks.DebugSettings>.instance.isDisableLog = isDisablelog;

こんな感じで受け取ることができます。また、値を参照したい時は受け取り時と一同じで

#if UNITY_EDITOR
bool isDisableLog = UnityEditor.ScriptableSingleton<DebugSettings>.instance.isDisableLog;
#endif

とすることで値を共有することが出来ます。

最後に

エディターでパラメータを設定して、瞬時に反映出来ると調整コストがグッと下がって良いですよね。