面板按钮扩展
在Assets下新建Editor文件,创建一个类,引用命名空间UnityEditor 写好一个静态方法,在方法上加一个属性[MenuItem("")] [MenuItem(“Tool/sss”)] [MenuItem(“Tool/sss”,bool isValidateFunction,int priority) isValidateFunction 这个方法执行前是否需要验证,验证通过才能点击执行,否则为灰色 priority:显示优先级,默认为1000,优先级相差10以上,会进行分组,有线分割开来
菜单栏扩展
[MenuItem(“Tool/sss”)] 那么在菜单栏就可以看到了 Hierarchy面板右键扩展 路径以GameObject开始, 将优先级弄成10以上就可以了 例如:[MenuItem(“GameObject/XP/XX”,false,1)]
Project面板右键扩展
路径以Assets开始 例如[MenuItem(“Assets/XP”)]
Inspector脚本面板右键扩展
方法1,在脚本的内部写 利用[ContextMenu(“XX”)],放在任意方法前 方法2,在Editor文件下的类写, 利用[MenuItem()],需要以CONTEXT/脚本的名字/自定义名字 需要放在一个静态方法前,操作这个组件的话,在静态方法中添加参数对象(MenuCommand mc),mc.context获取当前操作的组件 例如: [MenuItem(“CONTEXT/Player/TEST”)] static void Test(MenuCommand mc) { Player player =mc.context as Player; } 这个可以用在一些封装好的组件,比如Unity的内置组件Rigidbody
获取当前鼠标选择的物体
通过类Selection activeGameObject 获取当前选择的游戏物体,只要是GameObject的类型都可以 activeObject 不单单是游戏物体,Assets下的任意文件都可以 反之objects和gameobjects就是所有选择的物体,先选择的在前
Editor脚本下给一些操作添加撤销记录
通过Editor下通过代码操作的记录是无法通过Ctrl+Z进行撤销,利用Undo这个类 例如设置父节点或者删除物体,调用Undo类中的设置父节点(SetTransformParent),删除物体(DestroyObjectImmediate),而不是调用Transform.SetParent(),GameObject.DestroyImmediate() 例如通过Editor下修改某个对象的属性,通过Ctrl+Z撤销操作 Undo.RecordObject(Object obj,string name); 需要放在更改操作前
给这些方法增加快捷键***
在路径后面加一个空格,字母键位对应小写字母,shift对应#,ctrl对应%,alt对应&, 一些特殊键位:LEFT(←)、RIGHT(→)、UP(↑)、DOWN(↓)、F1 … F12、HOME、END、PGUP、PGDN 如果是单个键,只能是除了ctrl和shift和alt其他以外的任何键位,需要在之前加上下线(_),例如[MenuItem(“Tool/sss _5”)] [MenuItem(“Tool/sss _F12”)] [MenuItem(“Tool/sss _a”)] 组合键,必须是以ctrl或者shift或者alt开头的键位开头,前面不需要加下划线 例如 [MenuItem(“Tool/sss %a”)][MenuItem(“Tool/sss %F1”)] 注意,组合键只能最后只能一个键,前面可以放%#& 例如[MenuItem(“Tool/sss %#&a”)] 可以 [MenuItem(“Tool/sss %ab”)] 不行
给方法加上验证方式
再添加一个静态方法,方法上加上[MenuItem("",true,11)],返回值为bool 两个方法首先路径要相同,验证方法MenuItem中isValidateFunction为true 返回值为true才能点击,否则为灰色的不可点击状态
给Inspector面板上的属性右键扩展按钮
[ContextMenuItem("","")],放在可以在面板显示的字段上 第一个参数:面板显示名称 第二个参数:方法名字
向导
创建一个类XPWizard用来存放向导的属性,继承ScriptableWizard 显示向导:ScriptableWizard.DisplayWizard< XPWizard>(string title,string createButtonName,otherButtonName); 向导只能有两个按钮,可以选择创建一个按钮还是两个按钮 title:向导的标题 ,createButtonName:修改创建按钮的名字,默认为Create,otherButtonName :其他按钮的名字 点击向导中的创建按钮的监听方法:void OnWizardCreate() 打开向导中时调用和里面的值被修改是调用:void OnWizardUpdate() 点击其他按钮的方法: void OnWizardOtherButton() 错误信息:errorString,红色提示文字,动态赋值 帮助信息:helpString,正常颜色提示,动态赋值 底下按钮是否可点:isValid
Editor保存数据
EditorPrefs.SetInt(”AA",1); EditorPrefs.GetInt(“AA”);
编辑器工具:EditorUtility
自定义进度条 : EditorUtility.DisplayProgressBar(string title,string info,float progress);
title:标题 info 内容 progress : 进度(0-1)
默认没有取消按钮,一旦开始,无法中止,
调用: Editor Utility.ClearProgressBar
对话框:EditorUtility.DisplayDialog(string title,string message,string ok,string cancel)
title:标题 message: 对话框内容 ok :确认按钮的文本 cancel 取消按钮的文本
返回值为bool值,点击OK返回true,点击cancel返回false
自定义窗口:
创建一个类XPWindow继承EditorWindow, 显示窗口: XPWindow xpWindow = EditorWindow.GetWindow(); xpWindow.show(); 在OnGui中绘制这个窗口(EditorGUILayout或者GUILayout) 显示提示信息:ShowNotification(GUIContent notification);
|