替换引用工具

Replace References Tool(替换引用工具) 提供了一种可以在编辑器中将多种资源组合为一个资源的简单方法。 例如,试想一下,在开发过程中贴图经过多次复制,从而导致由于存储同一贴图的多个副本而浪费资源。 Replace References Tool(组合引用工具)允许用户根据需要选择所有类似应用,使它们指向一个特定的贴图实例。

尽管受虚幻引擎重新导入源资源的能力所限,但是如果您尝试两次添加相同的文件(相同名称、相同路径),开发同一游戏的多个开发者依然可以实现这个操作。

使用替换引用工具

资源整合使用起来非常简单,但是必须谨慎,正确使用它。

调用替换引用工具

要获取该工具的访问权限,您至少需要在 内容浏览器 中选择一项您希望在整合过程中使用的资源。 然后 右击 ,在出现的关联菜单中选择" Replace References(替换引用) "。 此时将会出现Replace References(替换引用)对话框,其中包含调用该工具时选择的所有资源。 另外,通过将资源从 内容浏览器 中拖拽到对话框的主要部分,可以根据需要添加其他资源。

合并通常仅限于相同类型的对象,但某些贴图和材质除外。 如果您没有看到Replace References(替换引用)选项或者不允许进行下拉操作,那么应该确保您只选择了同一类型的资源! 如果您无意中添加了您不想添加的资源,可以选中它然后按下键盘的 Delete(删除) 键,这样可以从对话框中将其删除。

Consolidate1.png

下面是一个复制很多次的贴图! 全选然后 右击 ,就可以使用Replace References(替换引用)选项。

整合资源

只要您在对话框中键入了整合过程中将会用到的所有资源,选择其中一个资源作为“要进行整合的资源”,然后点击 Consolidate Assets(整合资源) 。 所有没有在列表中选中的资源将会被替换为资源的引用,并且在此过程中删除未选中的资源。

注意,只有在对话框中至少有两个资源,而且至少选中一个资源的情况下,“整合资源”按钮才有效(可使用)。

Consolidate2.PNG

在Replace References(替换引用)对话框中,选中一个资源,将它标记为 "要合并到的对象"。

Consolidate2.1.PNG

在点击Consolidate Assets(合并资源)时,将会出现Delete Assets(删除资源)的对话框,这让您可以移除不再引用的资源以及因而不再使用的资源。 点击 删除

Consolidate3.png

已经将所有这些副本合并到选择中的资源!

保存修改的包

位于左下角的整合对话框提供保存修改的包的选项。 如果选中该选项,那么在完成整合操作后会立即提示您保存整合过程中所进行的任意UAssets修改。 这是可以保证正确保存所有进行整合的UAssets的简便方法,不需要亲自在 内容浏览器 中查找它们。 无论出于什么原因,如果没有成功进行整合或中途发生错误,将不会保存UAssets,同时您会收到相应的警告信息。

替换引用工具工作原理

实际的整合过程是分多个步骤进行的。 第一步,对于进行整合的所有有效对象,该工具会尝试将对这些对象的所有参数替换为已经加载并在内存中的对象/UAssets中“要整合的对象”的参数。 也就是说如果您已经打开引用某个要进行整合的对象的地图或UAsset,该工具会尝试立即更新这个地图或包。 下一步,该工具会尝试删除直接进行整合的对象(这项操作有可能会失败,请参阅限制和注意事项 )。 最后,如果删除成功,该工具会用对象重定向器 替换删除的对象。 这些操作会将有关删除对象的未加载UAssets重新定向为您进行整合的对象。

最佳实践

  • 考虑到它的作用本质,替换引用工具使用不当,后果不堪设想。 使用该工具的用户应该始终小心翼翼地进行操作,然后决定最终操作是否适用于他们的资源环境。 该工具可以防止某些明显错误的整合,但是用户还是应该始终多加小心,避免破坏UAssets。 切记,工具将会删除经过整合的资源并将以前使用的资源传送给选中的对象;它并不是进行“替换 Actor”类操作的备选方法。

  • 尽管替换引用工具将会尝试强制替换对象的参数,在当前加载和内存中的UAssets/地图中进行整合,但是最好在使用该工具时尽量少引用要整合的对象,以此增加成功整合的几率。 在实际操作中,打开子编辑器(例如,蓝图编辑器或静态网格物体编辑器),采用即将进行整合的资源,这种做法是非常不明智的。

  • 替换引用工具中频繁使用对象重定向器 ,也就是说在使用替换引用工具一段时间之后偶尔采用Fixup Redirects Commandlet(修复重定向命令行开关),这是个不错的主意。

限制和注意事项

替换引用工具虽然很有效,但是同时有一些限制和需要注意的事项,如下所示:

  • 为了阻止用户意外损坏他们的工作,只可以在共享同一种类/类型的资源上调用替换引用工具,所有对象都是一种类型的材质或贴图的情况例外(也就是说可以将一个材质整合为一个贴花材质,尽管严格地说它们不是同一种类型)。 这种限制可以适当地阻止肯定会发生的崩溃现象,例如将一种材质整合为一个静态网格物体。 甚至在可以进行交叉型整合的地方,该工具会显示一条清晰可见的警告信息,即选择了多种类型进行整合。

  • 替换引用工具无法始终整合用户选择的资源。 如果用户选择“要进行整合的资源”,其中包含对要整合的某个资源的引用,那么将不会整合这个要进行整合的指定资源。 进行此类操作将会使“要进行整合的资源”引用本身,这样肯定会出问题。 在整合操作结束时,会警告用户,整合操作是否跳过了他们的资源。

  • 替换引用工具有时可能无法整合其他有效资源,除非可以清除它的所有参数,否则无论出于什么原因都不可以删除。 此类故障非常严重,会导致“部分整合”,其中有一部分资源使用已经进行整合,而有一部分没有。 此类故障应该十分罕见,但是应该是会发生的情况,用户收到警告信息,对话框显示受到影响的资源以及可能受到影响的UAssets。 用户 不得 保存任何受影响的UAssets,否则他们会接受到一个具有潜在危险的部分整合。

  • 正如在最佳实践 中所述,当各种子编辑器中使用的是可能受到影响的资源时,使用替换引用工具是非常不明智的,例如,Persona或蓝图编辑器。 最后,大多数子编辑器此时还不适宜参数从它们的下方开始进行交换,所以在整合过程中使用子编辑器可能会导致子编辑器处于无效状态和/或可能发生崩溃现象。

  • 资源整合工具只可以将参数替换为在操作过程中已经加载的UAssets中的整合对象。 它依赖于[[Redirector][对象重定向器]]修复未加载包中的剩余参数。 这意味着应该小心谨慎,在没有明确要求的情况下不要执行会侵犯、覆盖、删除重定向器的操作。 否则,有些包可以正确进行修复,而有些则不可以。 如上所述,使用修复重定向器命令行开关可以缓解这个问题。

  • 到目前为止,只要成功执行了整合操作之后,建议在尝试加载进入内存之前保存相关的UAssets,以及任何也引用某个经过整合的对象的未加载UAssets。 如果在保存之前加载引用UAssets,目前悬而未决的 内容浏览器 /对象重定向器 bug 可能会使经过整合的资源重新显示在浏览器中。