资讯
展览资讯 大型展会 灯光节 大型盛典 赛事 中标捷报 产品快讯 热门话题 艺术节 活动 演出 新闻 数艺报道 俱乐部签约
观点
大咖专访 观点洞察 书籍推荐 吐槽 设计观点 企业访谈 问答 趋势创新 论文 职场方法 薪资报价 数艺专访
幕后
幕后故事 团队访谈 经验分享 解密 评测 数艺访谈
干货
设计方案 策划方案 素材资源 教程 文案资源 PPT下载 入门宝典 作品合集 产品手册 电子书 项目对接
  • 0
  • 0
  • 0

分享

资源索引系统、搜索记录、Search Table视图……Unity 2021.2 搜索功能大更新

2022-02-17

过去一年里,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 > 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 的外貌。


[SearchContextAttribute]:
https://docs.unity3d.com/2021.2/Documentation/ScriptReference/Search.SearchContextAttribute.html


Search Provider:
https://docs.unity3d.com/2021.2/Documentation/ScriptReference/Search.SearchProvider.html








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 的搜索,或同时发起多次搜索。

 比如说,显示当前场景中所有着色器无法编译的对象。

02  在搜索中转换和筛选结果,表达式非常像 LINQ 加上 SQL 加上 Lisp(S-Expression 句法)。

 sort{count{...groupby{a:assets, @type}}, @value, desc}

 select{t:LODGroup, @lodsize}


03  如果在 Search Table 中使用,你就能发起复杂的搜索,并将结果列为表格。Search Expression 可用作长期集成或验证系统的基础。


Search Table:

https://docs.google.com/document/d/1MSCfgioubn6NwWTYZqorVYeF3FfeXYJ0d2AZXepGacE/edit#heading=h.noyflehpbuz9

当然 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


[2] 搜索功能演示:

https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Query-Examples


[3] 原型开发工具:
https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Dependency-Viewer

[4] 公共 GitHub 仓库:

https://github.com/Unity-Technologies/com.unity.search.extensions


[5] 搜索功能文章:

https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Blog-Search-21.2


[6] 搜索表达式:

https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/Search-Expressions





长按关注

Unity 官方微信

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




 每一个“在看”,都是我们前进的动力 

阅读原文

* 文章为作者独立观点,不代表数艺网立场转载须知

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

数字媒体艺术 新媒体艺术 科技艺术

19619 举报
  0
登录| 注册 后参与评论