【Unity】ScriptableSingletonでEditorWindowで設定したパラメータを共有する
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
とすることで値を共有することが出来ます。
最後に
エディターでパラメータを設定して、瞬時に反映出来ると調整コストがグッと下がって良いですよね。