昨日参加した「第4回 渋谷Unity技術勉強会xコロプラUnity事例発表」でPreference(Unityの設定画面)を拡張することが出来る PreferenceItem というものを知りました。まだ使った事が無いので早速、使ってみました。
Unity Script Reference – PreferenceItem
http://unity3d.com/support/documentation/ScriptReference/PreferenceItem.html
調べてみると PreferenceItem はバージョン3.5から追加されたみたいです。
Improved preferences window that users can extend by using the PreferenceItem attribute.
UNITY: What's New in Unity 3.5
http://unity3d.com/unity/whats-new/unity-3.5
サンプルとしてToDoをテキストで保存するものを作ってみました。
C#とJavaScript、両方のサンプルを作りましたのでお好みの方をお使い下さい。
他のエディタ拡張と同様に Editor フォルダを作成し、その中にファイルを保存すると適用されます。
※現在のバージョンでは Editor フォルダに入れてなくても動作するみたいです(Windows版のUnityで確認。バグかな?)。
【C#での実装(Todo.cs)】
using UnityEngine; using System.Collections; using UnityEditor; public class Todo { private static bool prefsLoaded = false; private static string text; private const string TEXT_KEY = "TODO"; [PreferenceItem ("ToDo")] public static void PreferencesGUI () { if (!prefsLoaded) { text = EditorPrefs.GetString (TEXT_KEY, ""); prefsLoaded = true; } text = EditorGUILayout.TextArea (text, GUILayout.Height(100)); if (GUI.changed) EditorPrefs.SetString (TEXT_KEY, text); } }
【JavaScriptでの実装(Todo.js)】
#pragma strict public class Todo { static var prefsLoaded : boolean = false; static var text : String; static var TEXT_KEY : String = "TODO"; @PreferenceItem ("ToDo") static function PreferencesGUI () { if (!prefsLoaded) { text = EditorPrefs.GetString (TEXT_KEY, ""); prefsLoaded = true; } text = EditorGUILayout.TextArea (text, GUILayout.Height(100)); if (GUI.changed) EditorPrefs.SetString (TEXT_KEY, text); } }