UEDL8——Handles公共类
UEDL8——Handles公共类
本章代码关键字
1 | Handles //处理类,可以为某个脚本对象或者自定义编辑器窗口拓展在Scene窗口上的显示,可以自定义绘制内容 |
Handles
Handles
类提供了很多API,让我们可以在Scene窗口中绘制我们的自定义内容
它和GUI
、EditorGUI
类似,只不过它专门提供给Scene窗口使用
想要在Scene窗口中显示自定义内容,我们需要在对应的响应函数中进行处理
Scene窗口拓展功能,主要是提供给自定义脚本和自定义窗口的,我们采用对应的规则进行处理
便可以在之后的学习中利用场景更新响应函数来自定义一些Scene窗口的显示内容
Handles
的更多内容可看:
- Handles - Unity 脚本 API(中文文档,部分翻译缺失)
- Unity - Scripting API: Handles (unity3d.com)(英文文档)
Scene窗口更新响应函数
关键点(前两个步骤 和自定义Inspector窗口显示内容一致):
-
单独为某一个脚本实现一个自定义脚本,并且脚本需要继承
Editor
一般该脚本命名为 自定义脚本名 +Editor
假设我们要对下面这个脚本进行Scene窗口显示的拓展:
-
在该脚本前加上特性
命名空间:UnityEditor
特性名:CustomEditor(想要自定义脚本类名的Type)
-
在该脚本中实现
void OnSceneGUI()
方法,该方法会在我们选中挂载自定义脚本的对象时自动更新注意:只有选中时才会执行,没有选中不执行
假设我们要为Lesson26
拓展在Scene窗口的显示,我们就需要声明这样的一个类
1 | using UnityEditor; |
值得一提的是,即使选中了挂载自定义脚本的对象,OnSceneGUI()
也不一定是每帧都执行
自定义窗口中监听Scene窗口更新响应函数
我们不仅可以为一个脚本拓展在Scene窗口上的显示,还可以为自定义编辑器窗口拓展Scene窗口上的显示
可以在自定义窗口显示时:
- 监听更新事件:
SceneView.duringSceneGui += 事件函数
- 窗口隐藏或销毁时移除事件:
SceneView.duringSceneGui -= 事件函数
假设我们要为Lesson26Window
这个编辑器窗口拓展Scene窗口上的显示,就需要这样实现:
1 | using UnityEditor; |
当自定义窗口显示时,就会执行添加到SceneView.duringSceneGui
事件内的方法,该方法要有一个SceneView
参数
Handles类的具体使用
- 文本、线段、虚线
- 弧线、圆、立方体,几何体
- 移动、旋转、缩放
- 自由移动、自由旋转
- 显示GUI
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!