Unity Editor扩展之ContextMenu

使用ContextMenu特性,可以使指定的函数在“Inspector”中右键可以执行该函数的功能

这里说一下其参数:

itemName没什么可说的,就是菜单的名字

isValidateFunction这个变量,官方解释是Whether this is a validate function (defaults to false).

如果isValidateFunction为true,那么这是一个验证函数,将在调用具有相同itemName的菜单函数之前被调用。

做了一些测试,它会对同标签的方法做验证,下面代码细说:

如果ContextMenu2的返回值是true,此菜单是可点击的,如果是false,则菜单变灰,不可点击:

priority是菜单的显示顺序:

Priority used to override the ordering of the menu items (defaults to 1000000).

### 使用或实现 Unity 中的 `ContextMenu` 属性 在 Unity 的开发过程中,可以通过 `[ContextMenu]` 属性为组件类添加上下文菜单项。这些菜单项可以在 Inspector 面板中右键单击目标对象时显示出来[^1]。 以下是具体实现方法: #### 定义带有 ContextMenu 的函数 要创建一个上下文菜单选项,只需在一个继承自 `MonoBehaviour` 或其他合适基类的脚本中定义公共或私有方法,并在其上方应用 `[ContextMenu("Your Menu Item Name")]` 属性即可。该方法可以接受零个参数并返回 void 类型。 ```csharp using UnityEngine; public class Example : MonoBehaviour { [ContextMenu("Example Action")] private void PerformAction() { Debug.Log("This action was triggered from the context menu."); } } ``` 上述代码片段展示了如何通过简单的声明来扩展功能访问路径。当用户在这个游戏物体上执行特定操作时(即在此处右键点击),他们能够看到新增加的功能入口——"Example Action"。 #### 结合 Assets 菜单项增强交互体验 如果希望进一步提升用户体验或者提供更多全局可用的操作,则可以考虑将此类行为绑定至主界面顶部栏下的某个子级位置下展示给开发者们知晓[^2]。此时需要用到的是另一个名为 `[MenuItem]` 的特性标签来进行配置说明工作流程安排计划表等等相关内容介绍如下所示例子所描述那样去做就可以了哦! ```csharp [MenuItem("Tools/Custom Action %&a")] private static void CustomAssetMenuAction() { Debug.Log("Triggered via Asset menu shortcut Ctrl + Alt + Shift + A"); } ``` 这里我们不仅限定了触发条件还设置了快捷键组合方便快速调用。 #### 创建独立编辑器窗口 除了利用现有布局结构外,有时可能还需要构建完全属于自己的定制化面板视图供内部人员测试验证新想法原型设计阶段使用等情况发生时候就需要运用到Editor GUI的知识点了[^3]。虽然这种方法相对复杂一点因为它涉及到更多概念理解掌握程度要求较高不过一旦学会之后就可以随心所欲地按照需求调整修改直至满意为止咯~ 例如下面这个基于 ScriptableWizard 构建向导对话框的小案例就很好地诠释了这一点: ```csharp class CreateMyGameObjectWizard : ScriptableWizard { public string objectName; [MenuItem ("Examples/Create My Game Object Wizard")] static void CreateWizard () { DisplayWizard<CreateMyGameObjectWizard>("Create My GameObject", "Create"); } protected override bool AllowMultiple => true; void OnWizardCreate () { var go = new GameObject(objectName); Selection.activeObject = go; } } ``` 此段程序允许使用者输入名称后生成对应名字的游戏物件实例。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值