Version: Unity 6.0 (6000.0)
语言 : 中文
搜索查询运算符
Manage search queries

函数引用

按类别划分的函数

集合操作

Expression 描述
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} 生成多个表达式的唯一集合并集。

集合筛选

Expression 描述
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} 排除表达式无效的搜索结果。

数学

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

Utility

Expression 描述
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} -> {each element in set gets assigned an aliasName}

alias{set, formatString} -> {each element in set gets assigned an alias computed from the 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...} -> {Average of selector value in each set}

avg{set...} -> {Average of @value in each set}

计算作为参数传递的每个集合中每个项的平均值。

示例:

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} -> {constant value}

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

示例:

first{constant{5}, t:material}

count

count{sets...} -> {count of each set}

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

示例:

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

示例:

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

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

distinct

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

Distinct 会从作为参数传递的所有集合中提取元素,并创建一个元素集合。与并集一样,不会保留重复元素。

示例:此示例展示了重复项被移除的情况。

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

示例:

distinct{*.mat, t:shader} -> {all materials and shaders in the project}

示例:

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

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

eq

eq{set, value} -> {all elements equal to value}

eq{set, selector, value} -> {all selector value equal to 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...} -> {New set of elements}

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...} -> {all first element in each sets}

first{count, sets...} -> {first count elements in each sets}

First 会返回在每个作为参数传递的集合中找到的第一个元素的集合。如果 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} -> {set of items where the value is converted to a string}

format{formatString, expression} -> {set of items where the value is set by applying a format string}

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

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

示例:

print{format{“value=@value”, [1,2,3,4]}} 将在控制台窗口中打印 [“value=1”,”value=2”,”value=3”,”value=4”]。

groupBy

groupBy{set, selector} -> {multiple sets of items grouped by their selector}

示例:

要计算项目中每种类型的资源数量,groupBy 函数与展开运算符结合使用,即可根据选择符自动对项进行分组。在以下示例中,它创建了一个相同类型项的集合。展开运算符可以将这个项的集合展开为同一类型的多个集合。

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

gt

gt{set, value} -> {all elements greater than value}

gt{set, selector, value} -> {all elements with selector value greater than value}

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

示例:

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

gte

gte{set, value} -> {all elements greater or equal than value}

gte{set, selector, value} -> {all with a selector value greater or equal than value}

通过保留那些大于或等于给定值的元素来过滤一组元素。

示例:

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

intersect

intersect{sets...} -> {elements that are in all sets}

intersect{sets…, selector} -> {elements whose selector value is contained in all sets}

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...} -> {all last element in each sets}

last{count, sets...} -> {last count elements in each sets}

Last 会返回在每个作为参数传递的集合中找到的最后一个元素的集合。如果 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} -> {all elements less than value}

lw{set, selector, value} -> {all elements with selector value less than value}

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

示例:

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

lwe

lwe{set, value} -> {all elements less or equal than value}

lwe{set, selector, value} -> {all with a selector value less or equal than value}

通过保留那些小于或等于给定值的元素来过滤一组元素。

示例:

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

map

map{set, <string containing selectors to replace>}

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 value element in each set}

max{selector, sets...} -> {max selector value element in each set}

查找最大的 @value` for each set passed as parameters. If a selector is passed as a parameter, find the element with maximum@selector` 值。

示例:

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

示例:

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

max{@size, *.png, *.jpg} -> {<largest .png file>, <largest .jpg file>}

min

min{sets...} -> {min value element in each set}

min{selector, sets...} -> {min selector value element in each set}

查找最小的 @value` for each set passed as parameters. If a selector is passed as parameter, find the element with minimum@selector` 值。

示例:

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

示例:

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

min{@size, *.png, *.jpg} -> {<smallest .png file>, <smallest .jpg file>}

neq

neq{set, value} -> {all elements not equal to value}

neq{set, selector, value} -> {all selector value not equal to value}

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

示例:

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

print

print(FormatString | selector, set)

Print 接受一个格式字符串(或选择符)和一组项,并在控制台中打印每个项的格式化结果。这对于调试项的值非常有用。

在项目中,以下表达式会在 Search 窗口中返回纹理及其路径,并在 Console 窗口中打印出来:

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

示例:

print{@value, [1,2,3,4]} 将在 Console 窗口中打印 [1,2,3,4]。

query

query{value} -> {query expression}

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

示例:

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 函数中的最后一个选择符也指定项的值

示例:

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

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

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

select 函数的选择符也可以是函数本身。这些函数中的选择符会根据正在处理的搜索项进行评估。

示例:

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

  1. 对于项目中的每个纹理,创建一个新的搜索项 (t:texture)
  2. 其标签等于纹理的 @path (@path)
  3. 其描述等于引用该纹理的预制件数量 (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, of , element]”表示法。

示例:

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}

计算每个集合中每个元素的 ``@valueof each item in each set passed as parameters. If a selector is passed as parameter, find the sum@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} -> {all materials and shaders in the project}

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 的音频剪辑:

where{t:AudioClip, @path:effect}

搜索查询运算符
Manage search queries