- 0
- 0
- 0
分享
- 资源索引系统、搜索记录、Search Table视图……Unity 2021.2 搜索功能大更新
-
2022-02-17
过去一年里,Unity 的搜索功能经历了极大的转变。除了能按名称查找对象的 Quick Search 包,还有更为精细的核心搜索功能,你将能保存搜索结果、查看结果详情,并使用类似 LINQ 的语言来发起复杂的搜索。
自 2021.1 版本首次推出的 Search 已然成为许多 Unity 用户必用的功能,内置于编辑器内的搜索功能无须安装额外软件包就能投入使用。
你可以输入字符来搜索对象并进行操作,也能发起更为复杂的搜索,发挥工具的潜力。在 Unity 2021.2 的新版本中,搜索功能迎来了一系列的重大改进,保证用户能维持高生产力。请在下文详细了解本次更新。
改进后的数据排列
今天的 Asset Indexing System(资源索引系统)要比以往更为强劲。初次排列现在不仅占用更少的时间和空间,而且还支持在 Index Manager(Window > Search > IndexManager )中自定义设置来扩充索引的信息量。

如果像上方一样启用列表中的 Properties 和 Dependencies,你就可以更充分地利用新的 Search Picker 和 Table。
搜索记录组织
另一个重大改进位于超级好用的搜索记录(Save Searches)功能里。我们很清楚重复地搜索是多么可恼,所以我们为搜索记录加了新的组织选项。

新选项包括:只显示在用户个人页面的 User Searches(保存为偏好设置),及与所有项目参与人共享的 Project Searches (保存为项目资源)。你可以为结果设置图标,并在新窗口中打开搜索结果。搜索窗口的状态将被保留,搜索文本、图标大小(特别是 Table 布局)和打开的搜索栏将始终被恢复。
Search Table视图

Unity 2021.2 支持在 Table 中可视化查询结果:

你可以按名称或描述来进行排序,甚至能用 Search Expression(搜索表达式)来提取文件属性,生成类似下方的列表:
https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Blog-Search-21.2#search-expressions
当然,这些花时间布置的列表也是可以保存的。前边提到,整个搜索窗口状态将持续保留,这其中也包括列表布局。你甚至可以创建自己的资源管理器,同时比较多个文件的属性值。
在建立好一个列表布局后,你可以点击 Save 按钮,将详细的报告保存为 CSV 或 JSON 文件,方便审查和比较同一项目的各个版本。
Search Picker
该功能更能满足高级 Unity 用户的需求。Unity 现在支持用搜索窗口代替旧方法来选取资源、对象或其他内容,让选取更加精确。你可以在代码中指明搜索所涉及的脚本属性。
先为任意参考属性加上 [SearchContextAttribute] 特性,再指定每次搜索的 Search Provider,来发起一次范围更小的初始搜索,或设定 Search View Flags 来更改 Search Picker 的外貌。
public class Weapon : MonoBehaviour{ [SearchContext("_t:texture width>=1024 -png -lightmap_", SearchViewFlags.GridView, "asset")] public Texture2D icon; public int damage;上方设定看起来会像这样:

注意,在 Search Picker 视图默认带有一种网格图的搜索设置。
搜索表达式
最后,我们加入了搜索表达式的概念。搜索表达式可让搜索字符更为强大、个性化。那它究竟能帮你做些什么呢?
01 你能用它来发起一次交叉引用多个 Search Provider 的搜索,或同时发起多次搜索。
比如说,显示当前场景中所有着色器无法编译的对象。
sort{count{...groupby{a:assets, @type}}, @value, desc}
select{t:LODGroup, @lodsize}
03 如果在 Search Table 中使用,你就能发起复杂的搜索,并将结果列为表格。Search Expression 可用作长期集成或验证系统的基础。
Search Table:
当然 Search Expression 的句法非常多,你可能会在搜索时用到以下内容:
查找所有带有“rock”纹理的预制件:
t:prefab ref={t:texture rock}
搜索系统将根据 t:texturerock 开始查找,再到所有纹理上查找 t:prefabref=,最后汇总并显示结果。
查找项目中的资源种类数:
count{t={distinct{select{a:assets, @type}}}}
求出项目中所有 LODGroup 配置文件的平均 LODSize:
avg{select{t:LODGroup, @lodsize}}
通常大括号就代表着搜索表达式。而前缀 avg、 select、 distinct 则表明了搜索结果的处理方法。求值过程运行于Unity的后台线程中,无论搜索有多复杂、数据有多大,搜索窗口不会出现无响应情况。
搜索功能同样支持保存非常长的搜索表达式,方便下次使用。
反馈及更多
本文介绍的所有功能都在 Unity 编辑器文档中有说明。
并且,我们还制作了多个搜索功能演示和几种基于 Search 功能打造的原型开发工具,并专程上传到公共 GitHub 仓库内供大家下载使用。
我们的 Wiki 百科还收录了几篇关于非常不错的搜索功能文章,其中有一篇详细解读了更为精密的搜索表达式。
Query Examples 页面还提供了 2022.1 新搜索功能的预览。

欢迎大家下载体验。
[1] Unity 编辑器文档:
https://docs.unity3d.com/2021.2/Documentation/Manual/search-usage.html
https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Query-Examples
https://github.com/Unity-Technologies/com.unity.search.extensions
https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Blog-Search-21.2
https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Search-Expressions


长按关注
第一时间了解Unity引擎动向,学习最新开发技巧

每一个“在看”,都是我们前进的动力
-
阅读原文
* 文章为作者独立观点,不代表数艺网立场转载须知
- 本内容由数艺网主动采集收录,信息来源为 “Unity官方平台” 公开网络发布内容。第三方如需转载本内容,必须完整标注原作者信息及 “来源:数艺网”,严禁擅自篡改、删减或未标注来源转载。 并附上本页链接: 若您的内容不希望被数艺网收录,或认为此举侵犯了您的合法权益,敬请通过微信 ID:d-arts-cn 联系数艺网。我们将致以诚挚歉意,并第一时间为您办理下架或删除处理。







