Version: 2023.2
public static void SetIconForObject (Object obj, Texture2D icon);

参数

obj The GameObject or MonoScript to associate the icon with.
icon The custom icon to associate with the GameObject or MonoScript. When this value is null, the default icon is restored.

描述

Sets a custom icon to associate with a GameObject or MonoScript. The custom icon is displayed in the Scene view and the Inspector.

Custom icons for GameObjects are saved in the scene.

using UnityEngine;
using UnityEditor;

class Example { [MenuItem("Examples/Set Custom Icon on GameObject")] public static void SetCustomIconOnGameObject() { var go = new GameObject(); var icon = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/MyIcon.png");

EditorGUIUtility.SetIconForObject(go, icon); } }

Using this function, you can set custom icons directly on a MonoScript. However the next time the script is reimported, the change will be lost.

To make the custom icon persistent, call MonoImporter.SetIcon and AssetImporter.SaveAndReimport. If the script is in a managed plugin, call PluginImporter.SetIcon instead of MonoImporter.SetIcon.

using UnityEngine;
using UnityEditor;

class Example { [MenuItem("Examples/Set Custom Icon on MonoScript")] public static void SetCustomIconOnMonoScript() { var monoImporter = AssetImporter.GetAtPath("Assets/MyMonoBehaviour.cs") as MonoImporter; var monoScript = monoImporter.GetScript(); var icon = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/MyIcon.png");

EditorGUIUtility.SetIconForObject(monoScript, icon);

// make the custom icon persistent monoImporter.SetIcon(icon); monoImporter.SaveAndReimport(); } }

When you set custom icons from a GUI, it is recommended that you defer reimport until the GUI is closed. If you reimport before the GUI is closed, the domain reload caused by recompiling the script could lead to a poor user experience.

Additional resources: MonoImporter, PluginImporter.