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 is lost.
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); } }
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.
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.