LoginSignup
14
14

More than 5 years have passed since last update.

Unity5でpublicになったDefaultAsset

Posted at

Unity4時代にエディター拡張をしている方はUnityEngine.DefaultAssetというTypeを見た方がいらっしゃると思います。タイミング的には「UnityEngine.Object」のカスタムエディターを作成するときとか。

ss_2015-03-08_16_47_58.png

ですが UnityEngine.DefaultAsset は internal であるため触ることが出来ませんでした。

DefaultAssetがエディターAPIに移動した

DefaultAsset のクラスが UnityEditor.DefaultAsset として public になり触れるようになりました。

フォルダーとシーンのカスタムエディターを作成してみる

BpAyKMtECK.gif

DefaultAssetInspector.cs
using UnityEngine;
using UnityEditor;
using System.IO;

[CustomEditor(typeof(DefaultAsset))]
public class DefaultAssetInspector : Editor
{
    Editor editor;

    public override void OnInspectorGUI ()
    {
        // DefaultAsset の GUI はデフォルトで無効になっているので有効にする
        GUI.enabled = true;

        var assetPath = AssetDatabase.GetAssetPath (target);

        if (AssetDatabase.IsValidFolder (assetPath)) {
            Editor.CreateCachedEditor (target, typeof(FolderInspector), ref editor);
        } else if (IsSceneAsset (assetPath)) {
            Editor.CreateCachedEditor (target, typeof(SceneInspector), ref editor);
        } else {
            // いらないかも
            base.OnInspectorGUI ();
        }

        if (editor) {
            editor.OnInspectorGUI ();
        }
    }

    private bool IsSceneAsset (string assetPath)
    {
        return Path.GetExtension (assetPath) == ".unity";
    }
}
FolderInspector.cs
using UnityEngine;
using UnityEditor;

public class FolderInspector : Editor
{
    public override void OnInspectorGUI ()
    {
        EditorGUILayout.LabelField ("フォルダーだよ!");
    }
}
SceneInspector.cs
using UnityEngine;
using UnityEditor;

public class SceneInspector : Editor
{
    public override void OnInspectorGUI ()
    {
        EditorGUILayout.LabelField ("シーンだよ!");
    }
}

コードの中で使った Editor.CreateCachedEditor 地味に便利ですね!

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14