できること
方法1 プレビュー画像をつける
プレビュー画像をつけられる
方法2アセットラベルを使用する
方法3 非公式機能を使う EditorGUIUtility.SetIconForObject
アップデートで使えなくなったり、不具合があるかも。
おにぎりになった。
方法1 の説明
editorフォルダに2つともいれる
using UnityEngine;
[CreateAssetMenu(fileName = "NewEnemyStatus", menuName = "Enemy Status")]
public class EnemyStatus : ScriptableObject
{
// ... その他のフィールド ...
[SerializeField]
private Texture2D previewImage; // これは永続化されます。
// previewImageのプロパティ(オプショナル)
public Texture2D PreviewImage
{
get { return previewImage; }
set { previewImage = value; }
}
}
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(EnemyStatus))]
public class EnemyStatusEditor : Editor
{
public override void OnInspectorGUI()
{
EnemyStatus enemyStatus = (EnemyStatus)target;
// シリアライズされた画像フィールドを操作
enemyStatus.PreviewImage = (Texture2D)EditorGUILayout.ObjectField("プレビュー画像:",
enemyStatus.PreviewImage, typeof(Texture2D), false);
// スクリプトのデフォルトのフィールドを描画
base.OnInspectorGUI();
// オブジェクトの変更を保存
if (GUI.changed)
{
EditorUtility.SetDirty(enemyStatus);
}
}
}
肝となるのはこれ
EnemyStatus enemyStatus = (EnemyStatus)target;
// シリアライズされた画像フィールドを操作
enemyStatus.PreviewImage = (Texture2D)EditorGUILayout.ObjectField("プレビュー画像:",
enemyStatus.PreviewImage, typeof(Texture2D), false);
// スクリプトのデフォルトのフィールドを描画
好きな画像を設定する。
方法2 ラベルで一覧にする
方法3 EditorGUIUtility.SetIconForObject
Editorフォルダに以下のスクリプトを作成
using UnityEditor;
using UnityEngine;
public static class SetIconForScriptableObject
{
[MenuItem("Assets/Set Custom Icon")]
static void SetCustomIcon()
{
var selectedObject = Selection.activeObject;
// カスタムアイコンのTexture2Dをロードする
var iconTexture = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets\\Utage\\Sample\\Textures\\emoji\\1f359.png");
// EditorGUIUtility.SetIconForObjectを使用してアイコンを設定する
EditorGUIUtility.SetIconForObject(selectedObject, iconTexture);
// 変更を保存
EditorUtility.SetDirty(selectedObject);
}
}
"Assets\Utage\Sample\Textures\emoji\1f359.png"
画像のパスは各自変えてね
デフォルトのアイコンに戻すには
// アイコンをデフォルトに戻す
EditorGUIUtility.SetIconForObject(selectedObject, null);
これでもどる