Unity4.2の新機能 - ObjectPicker
ObjectPickerがScriptから自由に扱えるようになりました
使い方良くわからんかったのでメモ
選択されたオブジェクトを取得するには EditorGUIUtility.GetObjectPickerObject を使用します ObjectPickerのイベント取得は Event.current.commandName で判別を行います
ObjectSelectorUpdatedの場合
- ObjectPicker内で選択されたオブジェクトが変更された時に呼び出されます
ObjectSelectorClosedの場合
- ObjectPickerが閉じられた時に呼び出されます
using UnityEditor; using UnityEngine; public class Example : EditorWindow { [MenuItem("Window/Example")] static void Do () { GetWindow<Example> (); } Object currentObject = null; Object selectedObject = null; void OnGUI () { //ObjectPickerを開く if (GUILayout.Button ("ShowObjectPicker")) { int controlID = EditorGUIUtility.GetControlID (FocusType.Passive); //CameraのコンポーネントをタッチしているGameObjectを選択する EditorGUIUtility.ShowObjectPicker<Camera> (null, true, "", controlID); } string commandName = Event.current.commandName; if (commandName == "ObjectSelectorUpdated") { currentObject = EditorGUIUtility.GetObjectPickerObject (); //ObjectPickerを開いている間はEditorWindowの再描画が行われないのでRepaintを呼びだす Repaint (); } else if (commandName == "ObjectSelectorClosed") { selectedObject = EditorGUIUtility.GetObjectPickerObject (); } EditorGUILayout.ObjectField (currentObject, typeof(Object), true); EditorGUILayout.ObjectField (selectedObject, typeof(Object), true); } }