Version: 2023.1
LanguageEnglish
  • C#

EditorGUIUtility.SetIconForObject

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Declaration

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

Parameters

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.

Description

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.

See Also: MonoImporter, PluginImporter.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961