うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】Editor Default Resources

Resources という特殊フォルダがあるように

Editor Default Resources という名の UnityEditor 専用 のフォルダが存在します

Editor Default Resources フォルダーは 1 つしか作成できず、Project のルートに配置する必要があります。Assets フォルダー内に直接配置します。必要なアセットファイルを、この Editor Default Resources フォルダーかそのサブフォルダーに配置します。アセットファイルがサブフォルダーにある場合は、EditorGUIUtility.Load 関数に渡されるパスに常にサブフォルダーパスを含有させます。

このフォルダ内のロードは EditorGUIUtility.Load を利用してのみロードすることができ
以下のような処理を記述します

EditorGUIUtility.Load("Path");

    static void loadExample()
    {
        // Assets/Editor Default Resources/ + aboutwindow.mainheader  を探す
        Texture tex  = (Texture)EditorGUIUtility.Load("aboutwindow.mainheader");
        Debug.Log("Got: " + tex.name + " !");

        Renderer r = GameObject.Find("Cube").GetComponent<Renderer>();
        r.sharedMaterial.mainTexture = tex;
    }


EditorGUIUtility.Load では ビルドインのリソースも取得でき

var texture = EditorGUIUtility.Load("icons/d_MoveTool.png") as as Texture2D;

とかすると移動アイコンが取得できます

f:id:hacchi_man:20200409234101p:plain


フォルダ名にはスペースを入れないといけないらしく
EditorDefaultResources としていたらロードできなかったため、調査していると Editor Default Resources としないといけないということでした