UEDL4-2——搜索框查询、对象选中提示
UEDL4-2——搜索框查询、对象选中提示
本章代码关键字
1 | EditorGUIUtility.ShowObjectPicker<>() //执行该方法会弹出一个搜索特定对象的窗口,用于选择自己想要的资源 |
搜索框查询
主要作用:弹出一个搜索窗口,用于选择自己想要的资源
主要API:EditorGUIUtility.ShowObjectPicker<资源类型>(默认被选中的对象, 是否允许查找场景对象, "查找对象名称过滤", 0);
- 参数一:默认被选中的对象的引用
- 参数二:是否允许查找场景对象
- 参数三:查找对象名称过滤(比如,如果这里填入
normal
,则文件名称中有normal
的会被搜索到) - 参数四:
controlID
, 默认写0
1 | private void OnGUI() |
显示效果:
在弹出的搜索框里选择了某个对象后,还需要配合下面的函数来获取对象
获取选择对象
主要API:EditorGUIUtility.GetObjectPickerObject()
该方法会直接获取搜索框窗口上选择的对象,但是我们需要在正确的时机调用它(例如点击了某个对象,关闭窗口时调用)
弹出的搜索窗口会通过发送事件的形式,通知开启它的窗口对象信息的变化
通过Event公共类可以获取其它窗口发送给自己的事件,会用到的Event
公共类相关内容如下:
-
Event.current
获取当前事件-
Event.current.commandName
获取当前事件命令的名字,可以通过这里的名字与特定事件名比较来确认当前为何种事件 -
获取选择对象会用到的特定事件名:
-
"ObjectSelectorUpdated"
对象选择发生变化时发送的事件命令的名字1
2
3
4
5if (Event.current.commandName == "ObjectSelectorUpdated")
{
//当搜索框窗口选择更新时进入这段代码块
Texture img = EditorGUIUtility.GetObjectPickerObject() as Texture;
} -
"ObjectSelectorClosed"
对象选择窗口关闭时发送的事件命令的名字1
2
3
4
5if (Event.current.commandName == `"ObjectSelectorClosed"`)
{
//当搜索框窗口关闭时进入这段代码块
Texture img = EditorGUIUtility.GetObjectPickerObject() as Texture;
}
-
-
1 | private Texture img3; |
显示效果(当点击弹出的搜索框内容时):
显示效果(当关闭搜索框时):
对象选择提示
EditorGUIUtility.PingObject()
方法可以在编辑器上(如Project窗口等)高亮显示Unity的Object变量关联的资源,传入要显示资源高亮的即可
1 | private Texture img3; |
显示效果:
-
选择一个资源(点击的上边的“打开搜索框查询窗口”选择的对象)
-
点击显示高亮(可能会失灵,原因不明,不能连按,需要等一会才能按)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!