| 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} | 计算每个表达式的和值。 |
| 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{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{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{value} -> {constant value}
尝试将值转换为常量字面值:可以是数字、字符串或布尔值。这可以用于消除某些函数中的参数类型歧义。
示例:
first{constant{5}, t:material}
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{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{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{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{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{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{set, selector} -> {multiple sets of items grouped by their selector}
示例:
要计算项目中每种类型的资源数量,groupBy 函数与展开运算符结合使用,即可根据选择符自动对项进行分组。在以下示例中,它创建了一个相同类型项的集合。展开运算符可以将这个项的集合展开为同一类型的多个集合。
count{...groupBy{a:assets, @type}} -> {numberOfAssetType1, numberOfAssetType2, .. numberOfAssetTypeN}
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{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{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{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{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{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{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{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{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{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(FormatString | selector, set)
Print 接受一个格式字符串(或选择符)和一组项,并在控制台中打印每个项的格式化结果。这对于调试项的值非常有用。
在项目中,以下表达式会在 Search 窗口中返回纹理及其路径,并在 Console 窗口中打印出来:
print{'path=@path', t:texture}
示例:
print{@value, [1,2,3,4]} 将在 Console 窗口中打印 [1,2,3,4]。
query{value} -> {query expression}
尝试将值转换为查询表达式。这可以用于消除某些特定函数中的参数类型歧义。
示例:
count{t:material} 等同于
count{query{t:material}}
random{sets...} -> {random elements in each set}
创建一组随机元素,这些元素取自作为参数传递的每组项。
示例:
random{[1,3,5], [6,4,2]} -> {3, 2} 返回每个集合中的随机结果。
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}}
t:texture)@path (@path)count{t:prefab ref=@id})。在本示例中,@id 表示每个纹理项的 SearchItem.id。
如果使用别名运算符,则可以将属性值分配给搜索项字段。
示例:
print{"@pow", select{t:script, @path as pow}}
这会从搜索项中提取 @path 属性,并将其分配给由 select 函数创建的新搜索项中名为 pow 的搜索项字段。
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{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{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{expression} -> {“text of the expression”}
从表达式创建字符串。这等同于使用 “” 或 ‘’ 分隔符。
示例:
[text{hello}] 等同于
[“hello”] 或 [‘hello’]
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{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}