版本:Unity 6 (6000.0)
语言:English
搜索表达式
创建自定义搜索提供程序

函数参考

按类别分类的函数

集合操作

表达式 描述
distinct
{Variadic | AnyExpression}
生成多个表达式的唯一集合并集。
except
{Iterable, Variadic | Iterable}
生成两个序列的集合差。
first
{Number, Variadic | Iterable}
返回每个表达式的第一个结果。
groupBy
{Iterable, Optional | Selector}
根据指定的@selector对搜索结果进行分组 | 提示:ExpandSupported
intersect
{No signature}
生成两个序列的集合交集。
last
{Number, Variadic | Iterable}
返回每个表达式的最后一个结果。
map
{Iterable, AnyValue}
使用变量映射表达式结果以形成新的表达式。
select
{No signature}
通过选择要获取的值和属性来创建新结果。
sort
{No signature}
根据条件对表达式结果进行排序。
union
{Variadic | AnyExpression}
生成多个表达式的唯一集合并集。

集合过滤

表达式 描述
eq
{Iterable, Selector, Literal | QueryString}
保留具有相等值的搜索结果。
gt
{Iterable, Selector, Literal | QueryString}
保留具有更大值的搜索结果。
gte
{Iterable, Selector, Literal | QueryString}
保留具有大于或等于值的搜索结果。
lw
{Iterable, Selector, Literal | QueryString}
保留具有较小值的搜索结果。
lwe
{Iterable, Selector, Literal | QueryString}
保留具有小于或等于值的搜索结果。
neq
{Iterable, Selector, Literal| QueryString}
保留具有不同值的搜索结果。
where
{Iterable, Text | Selector | QueryString}
排除表达式无效的搜索结果。

数学

表达式 描述
avg
{Selector, Variadic | Iterable}
查找每个表达式的平均值。
count
{Variadic | Iterable}
计算表达式中结果的数量。
max
{Selector, Variadic | Iterable}
查找每个表达式的最大值。
min
{Selector, Variadic | Iterable}
查找每个表达式的最小值。
sum
{Selector, Variadic | Iterable}
计算每个表达式的总和值。

实用程序

表达式 描述
alias
{Iterable, Text | Selector | Iterable}
为表达式分配别名。 | 提示:AlwaysExpand
constant
{Literal | Function}
返回每个表达式的第一个结果。
format
{Text | Selector, Variadic | AnyValue}
将参数转换为字符串,允许您格式化结果。
print
{Text | Selector, Variadic | Iterable}
在控制台打印表达式结果。
query
{No signature}
提示:ExpandSupported
random
{Variadic | Iterable}
随机选择每个表达式的结果。
set
{Variadic | Iterable}
返回任何表达式的元素集。
text
{No signature}
将任何表达式的文本转换为文字字符串。

按字母顺序排列的函数

alias

alias{set, aliasName} -> {集合中的每个元素都被分配了一个aliasName}

alias{set, formatString} -> {集合中的每个元素都被分配了一个根据formatString计算的别名}

此函数有效地为表达式分配了一个别名。这等效于使用“as”关键字。另请参阅别名用法

示例

count{t:material as material}等效于

count{alias{t:material, material}}

示例

为元素分配别名“number”:1、2 和 3。

alias{[1, 2, 3], 'number'}

示例

为 1、2 和 3 动态分配并计算别名

alias{[1,2,3], 'number @value}'}

avg

avg{selector, sets...} -> {每个集合中selector值的平均值}

avg{set...} -> {每个集合中@value的平均值}

查找作为参数传递的每个集合中每个项目的平均值。

示例

avg{[1,2,3,4, 5,6], [1, 1, 1], []} -> {3.5, 1, 1}

示例

avg{@size, t:texture, t:material} -> {1100576, 3618}

constant

constant{value} -> {常量值}

尝试将值转换为常量文字值:数字、字符串或布尔值。这可用于在某些函数中消除参数类型的歧义。

示例

first{constant{5}, t:material}

count

count{sets...} -> {每个集合的计数}

计算作为参数传递的每个集合中结果的数量。

示例

count{t:texture, t:material} -> {359, 194}

示例

从名为“assets”的索引中,按类型对资源进行分组,并计算每个资源组的数量。获取五个最大的组。

first{5, sort{count{...groupBy{a:assets, @type}}, @value, desc}}

distinct

distinct{sets...} -> {所有集合中所有唯一元素的统一集合}

Distinct 创建一个包含作为参数传递的所有集合中找到的所有元素的集合。与 union 一样,不会保留重复元素。

示例:此示例显示重复项已删除。

distinct{[1,2,3], [3,4,5]} -> {1,2,3,4,5}

示例

distinct{*.mat, t:shader} -> {项目中的所有材质和着色器}

示例

选择名为“project”的索引中每个资源的@type,并保留每种类型的单个资源,因为重复项是根据项目的@value计算的。

distinct{select{a:project, @type}}

eq

eq{set, value} -> {所有等于value的元素}

eq{set, selector, value} -> {所有selector值等于value的元素}

通过保留等于给定值的元素来过滤元素集。

示例

eq{[2,4,5,6,4,3], 4} -> {4,4}

这等效于

where{[2,4,5,6,4,3], “@value=4”}

示例

查找所有#width序列化属性为 256 的纹理。

eq{t:texture, #width, 256}

这等效于

t:texture #width=256

except

except{set, sets...} -> {新元素集}

Except 创建一个包含不在作为参数传递的任何集合中的所有元素的集合。

示例

except{[1,2,3,4,5], [2,3], [5], [6]} -> {1,4}

示例

except{t:prefab, t:prefab ref=select{t:texture, @path}}

first

first{sets...} -> {每个集合中的所有第一个元素}

first{count, sets...} -> {每个集合中的前count个元素}

First 返回作为参数传递的每个集合中找到的第一个元素的集合。如果传递了count作为参数,则将获取每个集合中的前count个元素。

示例

first{[3, 4,5], [9, 28, 3]} -> {3,9}

示例

first{3, [9, 28, 3, 4, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7]} -> {9, 28, 3, 1, 2, 3}

示例

按大小降序对项目中的所有 .fbx 文件进行排序,并显示三个最大的文件。

first{3,sort{*.fbx, @size, desc}}

format

format{expression} -> {值转换为字符串的项目集}

format{formatString, expression} -> {通过应用格式字符串设置值的项目集}

Format 可以以两种方式使用。当仅使用单个表达式参数时,它将尝试将项目的当前@value转换为字符串表示形式。

如果 format 与格式字符串一起使用,它将用项目的选定值替换格式字符串中的所有选择器,并将此格式化的字符串设置为项目的@value

示例

print{format{“value=@value”, [1,2,3,4]}}将在控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。 更多信息
参见词汇表
中打印[“value=1”,“value=2”,“value=3”,“value=4”]。

groupBy

groupBy{set, selector} -> {根据其selector分组的多个项目集}

示例

要计算项目中每种类型的资源数量,groupBy函数与扩展运算符相结合,允许您根据选择器自动对项目进行分组。在下面的示例中,它创建了一组相同类型的项目。扩展运算符允许您将此项目集扩展为多个相同类型的项目集。

count{...groupBy{a:assets, @type}} -> {numberOfAssetType1, numberOfAssetType2, .. numberOfAssetTypeN}

gt

gt{set, value} -> {所有大于value的元素}

gt{set, selector, value} -> {所有selector值大于value的元素}

通过保留大于给定值的元素来过滤元素集。

示例

gt{[2,4,5,6,4,3], 4} -> {5,6}

gte

gte{set, value} -> {所有大于或等于value的元素}

gte{set, selector, value} -> {所有selector值大于或等于value的元素}

通过保留大于或等于给定值的元素来过滤元素集。

示例

gte{[2,4,5,6,4,3], 4} -> {4,5,6,4}

intersect

intersect{sets...} -> {所有集合中都包含的元素}

intersect{sets…, selector} -> {selector值包含在所有集合中的元素}

Intersect 创建一个新元素集,其@value包含在所有集合中。如果将选择器作为参数传递,则使用选择器值来比较元素。

示例

intersect{[1,2,3,4,5], [3, 5], [6, 3]} -> {3}

示例

查找大小大于 4000 字节的所有纹理,并与路径包含单词“rock”的所有纹理相交。

intersect{t:texture size>4000, t:texture @path:rock}

last

last{sets...} -> {每个集合中的所有最后一个元素}

last{count, sets...} -> {每个集合中的最后count个元素}

Last 返回作为参数传递的每个集合中找到的最后一个元素的集合。如果传递了count作为参数,则将获取每个集合中的最后count个元素。

示例

last{[3, 4,5], [9, 28, 3]} -> {5, 3}

示例

last{3, [9, 28, 3, 4, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7]} -> {7,8,9,5,6,7}

示例

按大小升序对项目中的所有 .fbx 文件进行排序,并获取最后三个文件。

last{3,sort{*.fbx, @size}}

lw

lw{set, value} -> {所有小于value的元素}

lw{set, selector, value} -> {所有selector值小于value的元素}

通过保留小于给定值的元素来过滤元素集。

示例

lw{[2,4,5,6,4,3], 4} -> {2,3}

lwe

lwe{set, value} -> {所有小于或等于value的元素}

lwe{set, selector, value} -> {所有selector值小于或等于value的元素}

通过保留小于或等于给定值的元素来过滤元素集。

示例

lwe{[2,4,5,6,4,3], 4} -> {2,4,3,4}

map

map{set, <包含要替换的选择器的字符串>}

map 运算符是表达搜索表达式的一种函数式方法。它使用变量映射表达式结果以形成新的表达式。

以下示例

map{t:texture, t:prefab ref=@id} -> {t:prefab ref=<textureId1>} {t:prefab ref=<textureId2>} ... {t:prefab ref=<textureIdN>}

将为t:texture返回的每个纹理运行查询t:prefab ref=@id

这等效于运行

{t:prefab ref={t:texture}}

max

max{sets...} -> {每个集合中的最大值元素}

max{selector, sets...} -> {每个集合中具有最大@selector值的元素}

查找作为参数传递的每个集合的最大@value。如果将选择器作为参数传递,则查找具有最大@selector值的元素。

示例

max{[1,2,3,4,5,6], [2,4,5]} -> {6, 5}

示例

查找最大的 .png 文件和最大的 .jpg 文件。

max{@size, *.png, *.jpg} -> {<最大的 .png 文件>,<最大的 .jpg 文件>}

min

min{sets...} -> {每个集合中的最小值元素}

min{selector, sets...} -> {每个集合中具有最小@selector值的元素}

查找作为参数传递的每个集合的最小@value。如果将选择器作为参数传递,则查找具有最小@selector值的元素。

示例

min{[1,2,3,4,5,6], [2,4,5]} -> {1, 2}

示例

查找最小的 .png 文件和最大的 .jpg 文件。

min{@size, *.png, *.jpg} -> {<最小的 .png 文件>,<最小的 .jpg 文件>}

neq

neq{set, value} -> {所有不等于value的元素}

neq{set, selector, value} -> {所有selector值不等于value的元素}

通过保留不等于给定值的元素来过滤元素集。

示例

neq{[2,4,5,6,4,3], 4} -> {2,5,6,3}

print

print(FormatString | selector, set)

Print 函数接收一个格式字符串(或选择器)和一组项目,并在控制台打印每个项目的格式化结果。这对于调试项目的数值很有用。

在一个项目中,以下表达式会在搜索窗口中返回纹理及其路径,并在控制台窗口中打印它们

print{'path=@path', t:texture}

示例

print{@value, [1,2,3,4]} 会在控制台窗口中打印 [1,2,3,4]。

query

query{value} -> {query expression}

尝试将 value 转换为查询表达式。这可以用于在某些特定函数中消除参数类型的歧义。

示例

count{t:material} 等价于

count{query{t:material}}

random

random{sets...} -> {random elements in each set}

从传递作为参数的每个项目集中随机选择元素,并创建一个新的集合。

示例

random{[1,3,5], [6,4,2]} -> {3, 2} 返回每个集合中的随机结果。

select

select(<set>, selectorForLabel, selectorForDesc, otherSelectors...)

Select 是一个函数,用于创建一个新的搜索项目集合,并从原始搜索项目集合中提取或转换属性。

select 函数的第二个参数 (selectorForLabel) 将选定的值赋给新项目的标签。

第三个参数 (selectorForDesc) 将选定的值赋给新项目的描述。

select 函数中的最后一个选择器也指定了项目的 value 值。

示例

在项目中搜索纹理时,使用 select 可以生成一个项目集,其中标签是路径,描述是纹理的大小。

select{t:texture, @path, @size}

select 语句中的最后一个选择器还会设置项目的 value 值。例如,对于 select{t:texture, @path, @size},这意味着 @size 也会成为搜索项目的 @value。切换到表格视图,查看搜索表达式如何替换标签和描述并设置 value 值。

select 函数的选择器本身也可以是函数。这些函数中的选择器根据正在处理的搜索项目进行计算。

示例

select{t:texture, @path, count{t:prefab ref=@id}}

  1. 对于项目中的每个纹理,创建一个新的搜索项目 (t:texture)
  2. 其标签等于纹理的 @path (@path)
  3. 并且其描述等于引用该纹理的 预制体一种资产类型,允许你存储一个完整的 GameObject 及其组件和属性。预制体充当模板,你可以从中在场景中创建新的对象实例。 更多信息
    参见 术语表
    数量 (count{t:prefab ref=@id})。在本例中,@id 指的是每个纹理项目的 SearchItem.id

如果你使用别名运算符,可以将属性值赋给搜索项目字段。

示例

print{"@pow", select{t:script, @path as pow}}

这会从搜索项目中提取 @path 属性,并将其赋给由 select 函数创建的新搜索项目中名为 pow 的搜索项目字段。

set

set{sets...} -> {set of all elements in all sets}

创建一个包含作为参数传递的所有集合中所有元素的集合。这等效于使用“[集合,的,元素]”表示法。

示例

set{[1, 2,3], [4,5,6]} 等价于

[[1,2,3], [4,5,6]],也等价于

[1,2,3,4,5,6]

sort

sort{set, selector} -> {set of items sorted in ascending order according to selector value}

sort{set, selector, desc} -> {set of items sorted in descending order according to selector value}

根据选择器值按升序或降序对一组项目进行排序。

示例

按升序(从小到大)对该集合进行排序。

sort{[4,2,7,5,8,1,9], @value} -> {1,2,4,5,7,8,9}

示例

按降序(从大到小)对该集合进行排序。

sort{[4,2,7,5,8,1,9], @value, desc} -> {9,8,7,5,4,2,1}

示例

根据其 @size 按降序(从大到小)对项目中的所有纹理进行排序。

sort{t:texture, @size, desc}

sum

sum{sets...} -> {sum of all elements in each set}

sum{selector, sets...} -> {sum of all elements in each set}

查找作为参数传递的每个集合中每个项目的 @value 之和。如果传递选择器作为参数,则查找每个集合中每个元素的 @selector 值之和。

示例

sum{[1,2,3,4,5,6], [2,4,5]} -> {21, 11}

示例

查找项目中所有纹理 @size 的总和。

sum{@size, t:texture}

text

text{expression} -> {“text of the expression”}

从表达式中创建一个字符串。这等效于使用“”或‘’分隔符。

示例

[text{hello}] 等价于

[“hello”][‘hello’]

union

union{sets...} -> {Unified set of all unique elements in all sets}

Union 创建一个包含作为参数传递的所有集合中所有唯一元素的集合。与 distinct 一样,不会保留元素的重复项。

示例

此示例显示重复项已被删除。

union{[1,2,3], [3,4,5]} -> {1,2,3,4,5}

示例

union{*.mat, t:shader} -> {项目中的所有材质和着色器}

where

where{set, filterString | selector} -> {filtered set of items}

Where 是一个通用的过滤函数,它接收一个选择器或包含选择器用法和运算符(>,==,…)的字符串来过滤集合的元素,并返回新的过滤后的集合。

示例:根据数值过滤数字

where{[1,2,3,4,5,6,7,8,9,10], '@value>4 and @value<9'} -> {5,6,7,8}

示例:查找所有包含“effect”一词的 音频剪辑Unity 中音频数据的容器。Unity 支持单声道、立体声和多声道音频资产(最多八个声道)。Unity 可以导入 .aif、.wav、.mp3 和 .ogg 音频文件格式,以及 .xm、.mod、.it 和 .s3m 跟踪模块格式。 更多信息
参见 术语表

where{t:AudioClip, @path:effect}

搜索表达式
创建自定义搜索提供程序