You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何隐藏场景视图的自定义脚本Gizmo并保留其他窗口图标?

移除Unity Scene视图自定义图标,保留Inspector/Project窗口图标

问题说明

给脚本或GameObject设置自定义图标后,Unity默认会在Scene视图同步绘制,当挂载同脚本的物体密集时会导致视图杂乱。GizmoUtility.SetGizmoEnabled无效通常是因为参数未精准指向目标脚本的Gizmo类型,或者该函数无法区分不同窗口的图标显隐规则。

有效解决方案

方法1:重写脚本的Gizmo绘制方法(推荐)

当脚本分配了自定义图标后,Unity会通过默认的OnDrawGizmos逻辑绘制图标。重写以下两个方法并留空,就能完全阻止Scene视图的图标绘制,同时不影响Inspector和Project窗口的图标显示。

代码示例:

using UnityEngine;

public class YourCustomScript : MonoBehaviour
{
    // 覆盖默认Gizmo绘制逻辑,留空则不绘制任何内容
    void OnDrawGizmos() { }

    // 若需要选中物体时也不显示图标,同样留空该方法
    void OnDrawGizmosSelected() { }
}

原理:Unity优先执行脚本内自定义的OnDrawGizmos方法,默认的图标绘制逻辑会被覆盖,从而实现Scene视图图标隐藏,其他窗口不受影响。

方法2:精准控制Gizmo显隐(代码方式)

如果想用GizmoUtility.SetGizmoEnabled,需要确保传入正确的脚本类型参数,单独关闭该脚本对应的Scene视图Gizmo(包括图标):

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public static class GizmoToggle
{
    static GizmoToggle()
    {
        // 替换为你的目标脚本类型
        GizmoUtility.SetGizmoEnabled(typeof(YourCustomScript), false);
    }
}

注意:此代码需放在Editor目录下,依赖UnityEditor命名空间,仅在编辑模式生效。

方法3:手动关闭Gizmo菜单选项

在Scene视图右上角的Gizmos菜单中,找到对应脚本的名称,取消勾选即可关闭该脚本的Scene视图图标,操作简单但无法批量或通过代码控制。

内容的提问来源于stack exchange,提问作者Obscure021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:15:56