赞
踩
Editor下面的代码与资源只会在编辑模式下进行
在菜单栏上添加我们自己的按钮,执行我们自己的方法:
效果:
书接上回
1.可以发现只有在GameObject窗口中第一个横线之上的按钮才能在Hierarchy窗口中被点击
2.可以看到在菜单中不同的类别会被横线分隔开,那如何我们自己将他们设为不同的分类呢?
3.例子:现在要将test1,test2为一类,test3为一类中间横线分隔开
4.实现:第一步:
5.效果:
6.第二步:
7.效果:
⭐结论:当同一列表相邻两条目优先级差距大于10会自动产生一条横线 !!!
⭐GameObject/ 下的菜单项目中优先级小于50的会显示在Hierarchy面板对象的右键菜单中!!
8.所以如此就可以:
最后效果:
首先菜单栏出现窗口
hierarchy窗口右键也会有
tips:第7章节写的是如何不用这一章节CONTEXT方法来实现给组件添加按钮的功能,而是直接写在组件的代码中(注意第7章节只针对于用户自己写的组件,而系统内部组件因为我们没办法修改其代码所以还是需要这一章节的内容)
CONTEXT 组件名 按钮名
如此:
clear后便会执行我们的逻辑
Selection静态类
1.objects 可以获得一个数组,这个数组是选择的所有的游戏物体数组
并且可以获取Project窗口中的
3.activeGameObject是在Hierachy面板上显示的游戏物体
选择多个时,只会显示第一个:
3.activeTransform是通过activeGameObject直接访问身上的Transform组件,且只能获取一个
4.activeObject是包含了预制体的,不只Hierarchy窗口中的物体
5.只有以active打头的才可以获取场景中的物体而不包含Project窗口中的物体。
使用GameObject.DestroyImmediate函数,将自制的删除功能添加到project右键的菜单栏中:
注意:当使用自己的删除后没办法ctrl+z撤销!!!!
因为我们是使用代码执行的操作,没办法取消,唯一办法是将删除操作注册到操作记录中
这样子删除后就可以使用Ctrl+z撤销删除操作!
在想要点击的按钮后面+空格+_+想要绑定的快捷键即可完成快捷键的绑定
快捷键和路径中间一定要有一个空格的间隔
如上面的"Tools/test _v"
要作如下转换:
%=ctrl #=shift &=alt(API中有)
而且不需要写下划线_ 直接使用%替换就行
运行结果:
MenuItem的参数列表:
第二个参数就是isValidateFunction
功能:只有当我们选择了一个游戏物体时才可以点击
代码:
//将isValidateFunction参数设置为true
//并且路径以及按钮名称需要一模一样,表示下面我们声明的方法是对应按钮的验证方法
//方法的返回值一定要是bool类型的,当返回值为true时表示执行下面的方法
//当每次弹出选择栏的时候便会执行一次这个方法
可以看到:只有选中了才会有my delete按钮:
不选中时便不会有这个按钮
Tips1:该只针对于用户自己写的组件,而系统内部组件因为我们没办法修改其代码所以还是需要第3章节的内容
Tips2:使用ContextMenu和ContextMenuItem不需要引用命名空间UnityEditor的,它存在于UnityEngine,因为它属于MonoBehaviour里的方法(虽然也是属于编辑器扩展)
ContextMenuItem作用:给我们脚本的属性添加功能的
执行效果:
如此便实现了这个功能
首先注意:ScriptableWizard是继承自EditorWindow类的
效果:
1.首先如何修改对话框中的点击按钮的名字呢?
可以发现按钮的名字已经更改了
1.2.补充:其实DisplayWizard还有第三个参数:也就是说其实可以创建两个按钮也不只是一个
"otherButtonName"
注意:CreateButton执行完后会关闭对话框,而OtherButton关闭后不会关闭对话框
2.如何为点击按钮增加点击事件/方法呢?
3.如何取得我们所选取的所有物体:
需要返回第四章了,使用Selection类中的gameObjects(因为gameObjects包含Prefabs预制体的)
逻辑:
4.但是这样做修改了数据后没办法使用ctrl+z撤销修改,我们只能增加以下逻辑:
这样子就可以做到记录下面要执行的操作然后撤销更改了。
1.首先第一个就是上面的OnWizardCreate()
2.第二个就是OnWizardUpdate():
3.OnSelectionChange()当选择的Selection发生改变时会触发这个方法
首先注意:ShowNotification是继承自EditorWindow类的,但由于ScriptableWizard是继承自EditorWindow类的所以便可以直接调用
1.ShowNotification的用法:
2.效果:
1.使用方法;
1.1EditorPrefs下有多个接口,我们使用SetInt来举例:
1.2可以看到首先需要传入一个string类型的键,再传入一个int类型的值
1.3具体实现:(注意划红线的才是本节的代码)
2.运行效果:
1.使用EditorUtility下的接口:
有两个接口:1.DisplayProgressBar 2.DisplayCancelableProgressBar
其区别是DisplayCancelableProgressBar这个接口可以给进度条增加一个取消按钮,可以随时中断进度,用途比较广泛
但是这里我们只用第一个DisplayProgressBar 来做案例讲解
2.效果:
1.首先得到一个MyWindow的对象
2.之后调用show方法让其显示出来
3.增加一个可以创建一个用户自己输入的名字的物体:
执行效果:
4.但是这样同样也有一个问题:
创建的物体删除后没办法撤销:究其原因也是因为创建的物体Unity没有记录操作,所以同样需要调用Undo里的方法来将其注册进操作记录中:
这样之后就可以Ctrl+z撤销操作了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。