【虚幻引擎】内容浏览器高级搜索语法指南与制作自定义过滤器

高级搜索语法

本文介绍在内容浏览器中执行搜索时的高级搜索语法,并制作保存自定义过滤器。
高级搜索语法支持复杂的搜索查询,能够根据资产元数据的"键-值"对进行搜索,并允许访问特殊键值。


基础知识

包括 内容浏览器 在内的 搜索框 允许你使用高级语法搜索内容。
默认情况下,在搜索框中输入文本字符串将立即产生结果。这些结果将基于资产的名称或其类别。

  • 注意:这些结果仅来自 选中的当前目录和下面的所偶子目录

例如,键入 BP_Example 将产生包含字符串 BP_Example 的名称的所有资产。如下所示 -BP_Example
如果在搜索字段中键入 Widget,内容浏览器将生成名称中包含 Widget 的所有资产以及所有 Widget 蓝图-
Widget
左为Widget类型资产 ,右为Widget名称资产

😋这是我们日常的用法
😩虽然这种方法很有用,但如果结果有数百个,甚至数千个,它并不能帮助我们。这就是 搜索语法 的用处所在。

例如,将加号操作符+作为前缀添加到 BP_Example 将产生全匹配该字符串的结果。
(会在稍后讲解 “操作符” )
在这里插入图片描述
然后,将否定操作符-作为前缀附加到 BP_Example 将只产生不匹配该字符串的资产。
在这里插入图片描述


搜索语法简介

搜索语法是由键 (Key) 、操作符 (Operator) 和值 (Values) 组成的参数。

例如,查找所有 名称BP_Example 的资产的搜索参数如下所示 -
Name = BP_Example
其组成是:

名称操作符
Name=BP_Example

接下来我们分别介绍 Key,Operator,Values


Keys

Keys(键)是参数的指导。

名称描述示例替代项
Name目标资产名称。默认情况下,搜索字段使用此键。Name = BP_Example
Path目标资产路径。请注意,这使用内容浏览器的文件路径。Path = “/Blueprints/Core”
Class目标资源的类/类型。Class = Blueprint
Type = Widget
Type
Collection包含资产的任何集合/收藏/标签的名称Collection = ExampleCollectionTag
ParentClass资产的父类
资产元数据 MetaData目标资源的元数据
请注意,并非所有元数据都可用于搜索。
Triangles>=10500
Type==Skeletal
UVChannels>2
CollisionPrims!=0
MaterialDomain=Decal

这里需要着重说明一下 资产元数据

资产元数据搜索(Asset MetaData)

大多数可用于搜索的键来自于从资产注册表提取的资产元数据

不过,有几个特殊键适用于所有资产类型。这些特殊键仅支持 EqualNotEqual 比较运算符。

元数据是驻留在资产内部的键值对,每种资产类型都有自己特定的元数据集。
资产元数据

提示:在空白搜索字段中添加一个空格以查看所有可用的键。

例如:

  • 输入搜索参数 Triangles > 10000 将搜索所有具有超过 10,000 个三角形的静态网格资产。
  • 输入搜索参数 BlendMode = Masked 将搜索所有混合模式设置为 Masked 的材质。
  • 输入 sRGB = false 将搜索所有禁用 sRGB 的纹理资产。

Operators

Operators(操作符)是参数的逻辑。

语法类型用途示例替代
=相等查找与提供的值完全匹配的项。Name == BP_Example== :
!=不相等查找所有不匹配的项。Name != BP_Example!:
<小于查找所有小于提供的值的项。Triangles < 10000
<=小于等于查找所有小于或等于提供的值的项。Triangles <= 10000<:
>大于查找所有大于提供的值的项。Triangles > 100
>=大于等于查找所有大于或等于提供的值的项。Triangles >= 100>:
&查找满足这个条件和那个条件的项。Triangles < 1000 && Triangles > 2000AND &&
|查找满足这个条件或那个条件的项。Name == …_AC || Name == _SCOR ||
!查找不满足这个条件的项。!BP_ExampleNOT
-取反查找所有不是这个条件的项。-BP_Example
+精准查找所有完全匹配的项。+BP_Example
开头或结尾的匹配查找所有以这个开头或结尾的项。BP_… …_Example

Values

Values(值)是参数的目标。

类型示例说明
BooleanbHDR = true
bHDR = false
不要使用0或1来表示布尔值。
StringName = BP_Example
Name = “BP Example”
如果字符串中有空格,请使用引号。
NumericTriangles > 10000- 不要使用逗号 - 大于/小于根据特定键而定。
字符串

使用 无引号带引号 字符串的主要差异在于带引号字符串允许在搜索词中使用空格和特殊字符。

默认情况下,它们将执行部分字符串匹配,除非使用了TextCmpExactTextCmpAnchor 运算符来修改此行为。

一些特殊情况可能必须使用引号 标注为字符串 ,例如:

未注明为字符注明为字符说明
Name=NameName=“Name”消歧义
Name=Name AName=“Name A”串允许在搜索词中使用空格和特殊字符

字符串可以带引号(单引号或双引号),也可以不带引号。
带引号的字符串可以包含嵌套引号;但是,必须使用反斜杠\表示嵌套引号结束。

以下是使用单引号和双引号以及反斜杠的部分示例:

    "Foo\"bar"  ->  Foo"bar
    'Foo\'bar'  ->  Foo'bar
    "Foo\'bar"  ->  Foo'bar
    'Foo\"bar'  ->  Foo"bar
    "Foo\\bar"  ->  Foo\bar
    'Foo\\bar'  ->  Foo\bar

必须使用反斜杠来转义对另一个反斜杠的使用。


高级搜索语法

将搜索参数链接在一起是,是搜索需要真正掌握的地方。通过使用特定的操作符,可以连续链接多个搜索参数。

🤔注意:如之前列表所示,许多运算符都有替代字符。例如AND 运算符由 & 字符表示,OR 运算符由 |字符表示等。接下来可能会出现这种写法,不要迷茫

高级搜索简介

通过使用 ANDORNOT 运算符,你可以同时测试多个搜索运算。
例如,搜索任何使用半透明材质且该材质使用默认光照着色模型的资产,应使用以下句法:

BlendMode==Translucent AND ShadingModel==DefaultLit

通过使用 AND 运算符,混合模式和着色模型的运算都必须求值为True的资产才会显示在结果。

如果换成 OR 运算符,任一运算单独求值为True即可显示在结果。
比如,并非每个使用半透明混合模式的材质都将使用默认照明。
对于复杂的高级搜索,同类型运算符必须始终合并起来。如果开始使用不同的运算符类型,括号可以消除不明确性。
例如,我们可以执行两个搜索,然后求值来显示结果。
第一个运算对半透明和默认光照的任何材质求值:

BlendMode==Translucent AND ShadingModel==DefaultLit

第二个运算会对所有属于延迟贴花类型并且不使用场景颜色的材质进行求值:

MaterialDomain==DeferredDecal AND HasSceneColor==False

可以使用括号对上述两个搜索的结果求值。

 (BlendMode==Translucent AND ShadingModel==DefaultLit) OR (MaterialDomain==DeferredDecal AND HasSceneColor==False)

通过在两个括号括起的表达式之间使用 OR 运算符,结果将单独对每个括号中的表达式求值,然后显示任意一个为 True 的结果。如果使用 AND 运算符,则所有四个运算都必须返回 True 才会显示结果。

实例

输入 Name = Rocks
搜索:名字包含Rocks的资产

输入 Name = Rocks & Triangles > 10000
搜索:名字包含Rocks,且 面数超过10000的资产

我们继续 增加 搜索参数

输入 Name = Rocks & Triangles > 10000 & LODs = 1 & NaniteEnabled = false

在这里插入图片描述
我们搜索到的是:

  • 名字包含 Rocks
  • 超过 10000 面数
  • 仅具有基本的LOD
  • Nanite 已禁用(仅限 UE5+)

通过上面的例子,我们通过使用 AND 运算符将越来越多的搜索参数 链接 在一起,搜索变得更加优化,对目标的搜索范围逐渐 缩小

但为了使搜索参数更具包容性,我们还可以使用 OR 运算符,增加搜索范围的另一种可能性,将范围 扩大

例如输入
Name = Rocks | Name = Gate | Name = Chunk

在这里插入图片描述
搜索Name的范围 扩大 到了含Rocks,Gate,Chunk的资产

回到之前的例子,让我们继续使用搜索参数 Triangles > 100000 & LODs = 1 & NaniteEnabled = false

当我们输入:
Name = Rocks | Name = Gate | Name = Chunk & Triangles > 100000 & LODs = 1 & NaniteEnabled = false
😕嘿,不对!我们搜索到的是:

  • 名字包含Rocks或Gate的资产
  • 名字包含Chunk的资产中超过 10000 面数、仅具有基本的LOD、Nanite 已禁用的资产

🤔发生了什么? Triangles > 100000 & LODs = 1 & NaniteEnabled = false这段搜索参数 连接在了Name = Chunk

实际上,这里就应该使用()来修复这个参数
(Name = Rocks | Name = Gate | Name = Chunk) & (Triangles > 100000 & LODs = 1 & NaniteEnabled = false & Materials = 1)
通过用()包含参数,对参数之间进行隔离
这样我们搜索到的是:

  • 名字包含Rocks或Gate或Chunk的资产
  • 超过 10000 面数,仅具有基本的LOD ,Nanite 已禁用

自定义过滤器

😟虽然目前我们已经学会了如何编写自己的搜索语法,但是每次搜索都要写这么长一串参数链接,还是太麻烦了!
😮 ……等一下,这个是?
EPICの怜悯

UE4中为💾硬盘图标,UE5为加号图标

EPICの怜悯!😇
自定义过滤器
这样,过滤器中,就可以保存我们的自定义过滤器啦!
自定义
完~
你已经是过滤器大师啦!✌


附:

一些常用搜索参数

以下是总结的常用的搜索参数列表。

范围用途示例
General查找所有指定类型的资源+StaticMesh
General根据部分字符串查找资源T_… || …_BC
Blueprints查找所有蓝图+Blueprint
Blueprints查找所有使用特定接口的蓝图ImplementedInterfaces=BPI_Example
Blueprints根据组件数量查找蓝图BlueprintComponents = 0
Static Meshes查找所有静态网格+StaticMesh Type = +StaticMesh
Static Meshes查找所有需要优化的静态网格Triangles > 10000 & LODs = 1
Static Meshes根据Nanite状态查找静态网格NaniteEnabled = false
Static Meshes根据Nanite百分比查找静态网格NanitePercent < 50
Static Meshes查找没有LOD的静态网格LODs = 1
Static Meshes根据三角形数查找静态网格Triangles > 1000
Static Meshes查找所有具有特定数量UV通道的静态网格UVChannels > 2
Static Meshes查找所有具有特定数量材质槽的静态网格Materials > 2
Static Meshes查找所有使用LODGroup预设的静态网格LODGroup = LargeProp
Materials查找所有材质+Material
Materials根据材质域查找所有材质MaterialDomain = Surface
Materials根据混合模式查找所有材质BlendMode = Translucent
Materials根据Shading Model查找所有材质ShadingModel = Subsurface
Textures查找所有纹理+Texture2D
Textures根据尺寸查找所有纹理Dimensions = 2048
Textures根据sRGB设置查找纹理sRGB = true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值