Unityエディタ拡張

ScriptableObjectのアイコンを動的に変更する

Unity
この記事は約2分で読めます。

概要

これが
こんな感じで選択すると
こうなる。
便利。

ソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;
#endif

[CreateAssetMenu(menuName = "Test/Item")]
public class Item : ScriptableObject
{
    public Texture2D Icon;
}

#if UNITY_EDITOR
[CustomEditor(typeof(Item))]
public class ItemEditor : Editor
{
    public override Texture2D RenderStaticPreview
    (
        string assetPath,
        Object[] subAssets,
        int width,
        int height
    )
    {
        Item _target = target as Item;

        Texture2D newIcon = new Texture2D(width, height);

        if (_target.Icon != null)
        {
            EditorUtility.CopySerialized(_target.Icon, newIcon);
            return newIcon;
        }

        return base.RenderStaticPreview(assetPath, subAssets, width, height);
    }
}
#endif

参考リンク

コメント

タイトルとURLをコピーしました