Unity5.4.1与NGUI出现的问题Ignoring menu item NGUI because it is in no submenu!

升级Unity到5.4.1和NGUI到3.10.1后,每次重新编译都会遇到错误提示。问题出在NGUIMenu.cs的715行及后续代码。解决方案是删除'Breaker'相关代码,并将'Help'菜单项的优先级提高10,改为 '[MenuItem("NGUI/Help", false, 120)] static public void Help () { NGUIHelp.Show(); }'。" 109432961,10250280,Python运算符详解,"['Python', '基础教程', '编程语法']

原文:http://www.tasharen.com/forum/index.php?topic=14856.0

Hey Arenmook, after upgrading to Unity 5.4.1 (from 5.3.6p1) and upgrading to NGUI 3.10.1, Unity kept complaining on me on every recompile like this:

Quote
Ignoring menu item NGUI because it is in no submenu!

So I looked into it, and it turns out that this is the problem in NGUIMenu.cs Line 715+:

在Asset中的NGUI文件夹中找到NGUIMenu.cs文件,打开,把下面两句代码替换

  1.        
  2.         [MenuItem("NGUI/"false11)]
  3.         static void Breaker () { }
  4.  
  5.         [MenuItem("NGUI/Help"false12)]
  6.         static public void Help () { NGUIHelp.Show(); }
  7.  

It can be easily fixed by removing the "Breaker" lines and increasing "Help" Priority by 10, like so:

替换为以下一句

  1.        
  2.         [MenuItem("NGUI/Help"false120)]
  3.         static public void Help () { NGUIHelp.Show(); }

  4.  

Then Unity shuts up :)这样就解决了,看完不点赞,,免费拿人家的劳动成果。习惯了还
<think>我们正在处理一个Unity升级后出现的NGUI菜单项错误。错误信息是"Ignoring menu item NGUI because it is in no submenu!"。根据引用,这个问题通常是由于NGUI的菜单项配置不正确引起的。具体来说,NGUI的菜单项应该位于一个子菜单下,而不是直接放在顶层菜单中。 根据引用[2]和[3],解决方案是修改NGUIMenu.cs文件中的菜单项定义。具体来说,需要删除那个导致问题的Breaker菜单项,并调整Help菜单项的优先级。 原始问题代码(有问题的部分): [MenuItem("NGUI/", false,11)] static void Breaker() {} [MenuItem("NGUI/Help", false,12)] static public void Help () { NGUIHelp.Show(); } 修改后的代码(修复后): 删除Breaker菜单项,并将Help菜单项的优先级提高到120,使其位于NGUI子菜单下: [MenuItem("NGUI/Help", false,120)] static public void Help () { NGUIHelp.Show(); } 步骤: 1. 在Assets文件夹中找到NGUI的目录,然后找到Scripts/Editor/NGUIMenu.cs文件(路径可能略有不同,但通常在NGUI/Scripts/Editor下)。 2. 打开NGUIMenu.cs文件,定位到包含上述问题代码的位置(大约在715行附近)。 3. 删除Breaker菜单项(即删除两行代码:[MenuItem("NGUI/", false,11)]和static void Breaker(){})。 4. 修改Help菜单项的优先级,将原来的12改为120(或者一个较大的数字,确保它在子菜单中正确显示)。 5. 保存文件,重新启动Unity。 注意:根据引用[4],菜单项必须位于一个子菜单下,不能直接使用顶层菜单。因此,将菜单项放入"NGUI"这个子菜单下(即使用"NGUI/Help")是符合要求的。 如果修改后仍然有问题,可以尝试重新导入NGUI或者清除Unity的缓存(如Library文件夹)后重启。 另外,引用[3]中提到直接替换为一句代码,即只保留Help菜单项并设置优先级为120。 因此,具体操作如下: 在NGUIMenu.cs文件中,找到类似下面的代码段: [MenuItem("NGUI/", false,11)] static void Breaker() {} [MenuItem("NGUI/Help", false,12)] static public void Help () { NGUIHelp.Show(); } 替换为: [MenuItem("NGUI/Help", false,120)] static public void Help () { NGUIHelp.Show(); } 然后保存,重启Unity。 注意:如果代码位置有变动,请根据实际情况调整。 如果找不到Breaker,可以直接搜索“Breaker”函数,或者搜索[MenuItem("NGUI/", false,11)]。 如果按照以上步骤操作后问题仍然存在,请检查是否有多个版本的NGUI或者多个NGUIMenu.cs文件。 最后,为了避免类似问题,建议在升级UnityNGUI之前备份项目。 相关问题1. 如何避免Unity升级后插件出现兼容性问题? 2. 除了修改代码,还有其他方法解决NGUI菜单项错误吗? 3. 如何正确配置Unity编辑器的菜单项以避免“Ignoring menu item”错误?</think>### 解决Unity升级后NGUI菜单项报错问题Unity5.3.3f1升级到5.3.8f2后出现`Ignoring menu item NGUI because it is in no submenu!`错误,这是因为NGUI的菜单项配置不符合Unity 5.4+的规范。以下是完整解决方案: #### 根本原因分析 在Unity 5.4+版本中,所有菜单项必须位于二级子菜单下(格式应为`主菜单/子菜单`)。NGUI原有的顶层菜单项`[MenuItem("NGUI/...")]`因缺少上级菜单而被忽略[^1][^4]。 #### 修复步骤 1. **定位脚本文件** 在项目资源中找到NGUI的核心配置文件: `Assets/NGUI/Scripts/Editor/NGUIMenu.cs` 2. **修改菜单项声明**(约715行附近) ```csharp // 原始错误代码(需删除) [MenuItem("NGUI/", false, 11)] static void Breaker() {} [MenuItem("NGUI/Help", false, 12)] static public void Help() { NGUIHelp.Show(); } // 修改为 ↓↓↓ [MenuItem("NGUI/Help", false, 120)] // 优先级提高到120 static public void Help() { NGUIHelp.Show(); } ``` 关键修改: - 删除`Breaker()`函数及其`MenuItem`声明 - 将Help菜单项的优先级从`12`提升到`120`[^2][^3] 3. **保存并重启Unity** 修改后保存脚本,**必须重启Unity编辑器**使更改生效[^3]。 #### 预防措施 1. 创建自定义菜单项时始终使用二级路径格式: `[MenuItem("Tools/NGUI/Export")]` ✓ `[MenuItem("NGUI/Export")]` ✗(会触发同样错误)[^4] 2. 升级Unity前备份`NGUIMenu.cs`文件,或使用版本管理工具回退修改。 > **原理说明**:Unity 5.4+要求菜单项必须有父级菜单层级。NGUI的`Breaker`函数尝试创建无实质内容的占位菜单项,新版本中这种写法已被禁止[^2]。通过删除无效项并提高有效菜单项的优先级,可保持菜单结构兼容性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值