1.Unity3d Editor 编辑器扩展功能详解(6)Editor常用辅助类(下)
Unity3d Editor 编辑器扩展功能详解(6)Editor常用辅助类(下)
系列目录: Unity3d Editor 编辑器扩展功能详解(1) 目录索引
上一章节: Unity3d Editor 编辑器扩展功能详解(6)Editor常用辅助类(上)
下一章节: Unity3d Editor 编辑器扩展功能详解(7)(完结)Editor美化
本节查漏补缺,源码简单介绍一些其他辅助类。源码
一、源码 Selection
Selection主要是源码用于返回在编辑器中的选择对象(Object)信息,这个对象(Object)可以是源码贵金属交易系统源码一份资产文件(Asset、Prefab),源码源码战士也可是源码场景中的实例对象(Gameobject)。
一个经典应用就是源码,比如在EditorWindow中实例化了一个对象,源码出于操作友好性,源码应该把当前选择对象直接变为生成实例,源码这样在Inspector面板中就能显示对应信息了,源码这种操作就是源码gnuradioblock源码通过Selection类实现的。
(注:Selection在命名空间UnityEditor中定义)
1. Object Selection(对象选择)
2. Static Methods(静态方法)
3. SelectionMode详解
4. 示例案例
目的源码:获取某个文件夹下所有的Texture资产
示例代码:
目的:新建一个GameObject,同时选中
示例代码:
二、源码 Event
A UnityGUI event. Events correspond to user input (key presses, mouse actions), or are UnityGUI layout or rendering events. For each event OnGUI is called in the scripts; so OnGUI is potentially called multiple times per frame. Event.current corresponds to "current" event inside OnGUI call.
Event主要用于编辑器模式下,对IMGUI操作输入的源码自制响应。
在Editor模式(而不是Playing模式)下,写在代码中的类似Input.GetKeyDown是无效的,是无法获取键盘/鼠标操作信息的,取而代之的springjdk源码是使用类似Event.current.type == EventType.MouseDown检测输入。
它的使用可以在Editor的面板下,也可以在场景视图中(SceneView)。
1. 简单输入
示例代码:
2. 组合键
示例代码:
3. 坐标转换
一个很常见的需求就是,我们在SceneView中点击了,希望在点击处发射一条射线检测场景中的物体,求一个交点然后放置什么东西(就像Terrain的笔刷一样),这是通过以下方式实现的。
样例:
4. Tip
查阅资料的时候发现有这样一种使用方法:
文档解释: Unity - Scripting API: Event.Use
文档上说,在某些Event检测后,使用Event.current.Use();就能让其他GUI elements忽视这次Event。
比如说使用Alt+鼠标左键创建物体,但是这个组合键也是unity场景自带的组合键,用于旋转SceneView的,使用
Event.current.Use();就会让自带的旋转功能失效。
主要是为了解决组合键冲突吧。
Reference:
[1] Unity - Scripting API: Selection
[2] Unity - Scripting API: Event
[3] UnityEditor的Selection类_庸人自扰Eam的博客-CSDN博客