过去一年里,Unity的搜索功能经历了极大的转变。除了能按名称查找对象的Quick Search包,还有更为精细的核心搜索功能,你将能保存搜索结果、查看结果详情,并使用类似LINQ的语言来发起复杂的搜索,快来体验最新的搜索功能吧。
自2021.1版本首次推出的Search已然成为许多Unity用户必用的功能。内置于编辑器内的搜索功能无须安装额外软件包就能投入使用。
你可以输入字符来搜索对象并进行操作,也能发起更为复杂的搜索,发挥工具的潜力。在Unity 2021.2的新版本中,搜索功能迎来了一系列的重大改进,保证用户能维持高生产力。请在下文详细了解本次更新。
*注意,Quick Search目前有一版实验性版本可兼容2020.3,并包含了几乎所有的核心功能。要安装最新的预览包,请打开Project Settings,找到并启用Preview Packages选项。
今天的Asset Indexing System(资源索引系统)要比以往更为强劲。初次排列现在不仅占用更少的时间和空间,而且还支持在Index Manager(Window > Search > Index Manager )中自定义设置来扩充索引的信息量。
如果像上方一样启用列表中的Properties和Dependencies,你就可以更充分地利用新的Search Picker和Table。
另一个重大改进位于超级好用的搜索记录(Save Searches)功能里。我们很清楚重复地搜索是多么可恼,所以我们为搜索记录加了新的组织选项。
新选项包括:只显示在用户个人页面的User Searches(保存为偏好设置),及与所有项目参与人共享的Project Searches (保存为项目资源)。你可以为结果设置图标,并在新窗口中打开搜索结果。搜索窗口的状态将被保留,搜索文本、图标大小(特别是Table布局)和打开的搜索栏将始终被恢复。
搜索窗口允许以多种方式可视化对象,包括列表、大图标列表及多种尺寸的块状视图,如下图所示。
Unity 2021.2支持在Table中可视化查询结果:
你可以按名称或描述来进行排序,甚至能用Search Expression(搜索表达式)来提取文件属性,生成类似下方的列表:
当然,这些花时间布置的列表也是可以保存的。前边提到,整个搜索窗口状态将持续保留,这其中也包括列表布局。你甚至可以创建自己的资源管理器,同时比较多个文件的属性值。
在建立好一个列表布局后,你可以点击Save 按钮,将详细的报告保存为CSV或JSON文件,方便审查和比较同一项目的各个版本。
该功能更能满足高级Unity用户的需求。Unity现在支持用搜索窗口代替旧方法来选取资源、对象或其他内容,让选取更加精确。你可以在代码中指明搜索所涉及的脚本属性。
先为任意参考属性加上[SearchContextAttribute]特性,再指定每次搜索的Search Provider,来发起一次范围更小的初始搜索,或设定Search View Flags来更改Search Picker的外貌。
上方设定看起来会像这样:
注意,在Search Picker视图默认带有一种网格图的搜索设置。
最后,我们加入了搜索表达式的概念。搜索表达式可让搜索字符更为强大、个性化。那它究竟能帮你做些什么呢?
当然Search Expression的句法非常多,你可能会在搜索时用到以下内容:
查找所有带有“rock”纹理的预制件:
t:prefab ref={t:texture rock}。
搜索系统将根据t:texture rock开始查找,再到所有纹理上查找t:prefab ref=,最后汇总并显示结果。
查找项目中的资源种类数:
count{t={distinct{select{a:assets, @type}}}}
求出项目中所有LODGroup配置文件的平均LODSize:
avg{select{t:LODGroup, @lodsize}}
通常大括号就代表着搜索表达式。而前缀avg、 select、 distinct则表明了搜索结果的处理方法。求值过程运行于Unity的后台线程中,无论搜索有多复杂、数据有多大,搜索窗口不会出现无响应情况。
搜索功能同样支持保存非常长的搜索表达式,方便下次使用。
Is this article helpful for you?
Thank you for your feedback!