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

Unity MenuItem设置透明后消失问题求助(2022.2.20版本)

Unity MenuItem 设为透明禁用状态而非隐藏的解决方案

问题描述

想要将Unity中的MenuItem设置为透明(禁用)状态,但使用当前脚本后,MenuItem直接从项目列表中消失。

使用脚本

using UnityEditor;

public class Example 
{
    static bool showMenu = false;
    [MenuItem("GameObject/MY/Test", true)]
    private static bool CreateEmpityMap() { return showMenu; }
    [MenuItem("GameObject/MY/Test", false)]
    private static void CreateEmpityMap(MenuCommand menuCommand)
    {
        
    }
}

环境信息

  • Unity版本:2022.2.20

当前效果

MenuItem从列表中消失
当前效果

期望效果

MenuItem保持透明(禁用)状态但仍显示在列表中
期望效果

解决方案

Unity中,MenuItem的验证函数返回false时会直接隐藏菜单选项。要实现禁用(灰色透明)但保留显示的效果,需改用Menu.SetEnabled方法控制菜单启用状态,而非依赖验证函数返回值。

修改后的脚本:

using UnityEditor;

public class Example 
{
    static bool isMenuEnabled = false;

    // 验证函数始终返回true,确保菜单显示
    [MenuItem("GameObject/MY/Test", true)]
    private static bool ValidateCreateEmptyMap() 
    {
        // 动态设置菜单启用状态
        Menu.SetEnabled("GameObject/MY/Test", isMenuEnabled);
        return true; // 返回true保证菜单不被隐藏
    }

    [MenuItem("GameObject/MY/Test", false)]
    private static void CreateEmptyMap(MenuCommand menuCommand)
    {
        // 菜单点击逻辑
    }
}

核心说明

  • 验证函数ValidateCreateEmptyMap始终返回true,确保菜单不会被隐藏。
  • 通过Menu.SetEnabled("菜单路径", 启用状态)控制菜单是否可点击,禁用时自动变为灰色透明,匹配期望效果。
  • 修改isMenuEnabled变量的值,即可动态切换菜单的启用/禁用状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:13:13