Unity Editor编辑器(MenuItem)
来源:互联网 发布:阿里云空间购买流程 编辑:程序博客网 时间:2024/05/22 12:24
在菜单栏中添加按钮是为了方便大佬们编程方便
根据我写Editor编辑器的总结,可以添加 7 种按钮
注意:所有Editor的脚本不需要挂载,只需要放在Editor文件夹下,Unity会自动编译,所有方法都是静态方法
MenuItem Constructor
Other Versions
Leave feedback
public MenuItem(string itemName);
public MenuItem(string itemName, bool isValidateFunction);
public MenuItem(string itemName, bool isValidateFunction, int priority);
Parameters
itemNameTheitemName
is the menu item represented like a pathname. For example the menu item could be "GameObject/Do Something".itemName是表示为路径名的菜单项。 例如,菜单项可以是“GameObject / Do Something”。
isValidateFunctionIf
isValidateFunction
is true, this is a validation function and will be called before invoking the menu function with the same itemName
.如果isValidateFunction为true,那么这是一个验证函数,将在调用具有相同itemName的菜单函数之前被调用。priorityThe order by which the menu items are displayed.
菜单项的显示顺序。
1.在菜单栏添加按钮(如果添加到GameObject中的相应位置(修改priority)还可以在Hierarchy中右键点出)
[MenuItem("MyEditor/Mybutton",false,0)] public static void OnClick() { Debug.Log("按下button"); }
2.在组件中添加按钮(右键列表)(测试组件BoxCollider)
//必须在组件前面添加 CONTEXT组件标识 [MenuItem("CONTEXT/BoxCollider/TestCompent")] public static void Test() { Debug.Log("查看测试组件"); }
[MenuItem("CONTEXT/Rigidbody/ChangeRigidboby")] public static void ChangeRigidboby(MenuCommand cmd) { //获取当前组件 Rigidbody rig=cmd.context as Rigidbody; //修改组件相关变量 rig.mass=12; rig.useGravity = true; Debug.Log(cmd.context.name); Debug.Log("ChangeRigidbody"); }
注:(为字段添加特性)ContextMenuItem(“方法名”“按键名”),(为方法添加特性)ContextMenu(“按键名”)可以在组件内部为该组件添加button右键菜单按钮(详细可查API文档)
4.Selection 获取当前选中物体[MenuItem("GameObject/Mydelete",false,11)] public static void SeletionTest() { //打印当前选中物体的个数 Debug.Log(Selection.objects.Length); //如果你删除了你选中的物体,可以点击此按钮恢复这些物体 foreach (Object item in Selection.objects) { //可以撤销删除操作 Undo.DestroyObjectImmediate(item); } }5.为按键添加快捷键
//%ctrl #shift &alt // ctrl+shift+w [MenuItem("MyButton/Debug %#w")] public static void MyButton1() { Debug.Log("Debug ctrl+shift+w"); }
6.方法验证
//为下方SeletionTest方法的验证 [MenuItem("GameObject/MyDelete",true,11)] public static bool MySeletionCondition() { //如果选中的物体不为空,则启用MyDelete按键 if(Selection.objects.Length!=0) { return true; } else { return false; } } //两个名称要一至,上方的true为开启验证 [MenuItem("GameObject/MyDelete", false,11)] public static void SeletionTest1() { //Selection 包含选中的一些方法,例如:ActionObject //输出选中的物体的个数(包含Project面板的物体) Debug.Log(Selection.objects.Length); //删除所有选中的物体(Unity回收机制类似回收站,删除的物体统一到一个地方) //当删除的物体达到一定程度时统一删除 foreach(Object item in Selection.objects) { DestroyObject(item); } }
7.创建与使用对话框
7.1创建对话框 例
/// <summary>/// 所有Editor的脚本不需要挂载,只需要放在Editor文件夹下,Unity会自动编译,所有方法都是静态方法/// </summary>
//需要继承ScriptableWizardpublic class MyEditorTest : ScriptableWizard{ //对话框中显示的值 public float aValue = 10.3f; public int bValue = 20; //按下那个键是创建 [MenuItem("MyTools/Create")] static void CreatWizard() { //创建对话框《创建类》(“对话框名称”) ScriptableWizard.DisplayWizard<MyEditorTest>("改变MyEditorTest脚本内部的值"); }}
执行效果
7.2 使用 例
//unity内部方法,当按下对话框中Create键时执行(修改按键名称之后还是该方法) private void OnWizardCreate() { //获取到所有选中的Prefab GameObject[] objects = Selection.gameObjects; foreach(GameObject obj in objects) { //当按下按键是,修改他们所有的相应值 obj.GetComponent<MyEditorTest>().aValue += 12; obj.GetComponent<MyEditorTest>().bValue+=12; } }
OK,添加这 7种按钮方法,希望能给大家有一点帮助
阅读全文
0 0
- Unity Editor编辑器(MenuItem)
- Editor------------------MenuItem
- unity编辑器(二)----MenuItem的用法
- Unity Editor 基础篇(十一):MenuItem属性
- Unity Editor GUI 编辑器入门教程
- Unity编辑器Unity Editor基础(一)
- Unity编辑器类(Editor)小结
- Unity Editor 编辑器扩展 五 EditorGUI
- Unity Editor 编辑器扩展 六 EditorWindow
- Unity Editor 编辑器扩展 八 Undo
- Unity Editor 编辑器扩展 九 Gizmos
- Unity Editor 编辑器扩展 十 Handle控件
- Unity Editor 编辑器扩展 十二 OverWriter
- Unity Editor编辑器外观Shader修改
- Unity Editor 编辑器扩展三 Unity Editor 数据持久化及Editor窗口的初识
- Unity MenuItem 菜单项
- 在Unity内制作工具(1)--MenuItem,Resouces.FindObjectsofTypeAll<>与EditorWindow自制编辑器窗口
- unity-菜单MenuItem的使用
- Mybatis学习笔记(七)【输入映射】
- HDU
- linux 系统下zookeeper的安装和配置
- Mybatis学习笔记(八)【输出映射】
- 让我们hook一个库函数
- Unity Editor编辑器(MenuItem)
- 授权验证,验证码工作方式
- 使用xml作为数据库的配置文件的路径读取问题
- 闭包的应用
- Java中Jackson使用汇总
- Mybatis学习笔记(九)【动态sql】
- 【人工智能】第三章 通过搜索进行问题求解
- pandas apply vs agg vs transform
- 7-10 树的同构(25 point(s))