読者です 読者をやめる 読者になる 読者になる

けいごのなんとか

Unityユーザーとしてのブログ。ギリギリ路線走ってます。

様々なEditorWindow③ - ScriptableWizard

様々なEditorWindow①

様々なEditorWindow② - SearchableWIndowの続きです

ScriptableWizard

  • GameObjectを作る
  • Prefabを作る
  • その他アセットを作る

何かを「作る」時に使用するWindowです。

OnGUIは使わない

ScriptableWizardではEditorWindowを継承しているのでOnGUIが使用出来ますが

OnGUIを使用するとCreateボタンとOtherボタンが表示されなくなってしまいます。 つまりただのEditorWindowになってしまいます。

ScriptableWizardに表示されるものはSerializedProperty

簡単にいえば「ScriptableWizardに表示されるものはInspectorに表示されるようなpublicな変数」

f:id:anchan828:20130216040027p:plain

サンプル: Prefabを作成してインスタンス化する

using UnityEngine;
using System.Collections;
using UnityEditor;

public class Hoge :  ScriptableWizard
{
    public string objectName = string.Empty;

    [MenuItem("GameObject/Create Object")]
    static void CreateWizard ()
    {
        ScriptableWizard.DisplayWizard<Hoge> ("Create Object", "Create");
    }
    
    void OnWizardCreate ()
    {
        GameObject obj = new GameObject (ObjectNames.NicifyVariableName (objectName), typeof(BoxCollider));
        Object prefab = PrefabUtility.CreatePrefab (string.Format ("Assets/{0}.prefab", obj.name), obj);
        
        DestroyImmediate (obj);
        PrefabUtility.InstantiatePrefab (prefab);
    
    }

    void OnWizardUpdate ()
    {
        //条件満たすまでCreateボタン押せない
        isValid = !string.IsNullOrEmpty (objectName);
    }
}