替换引用工具

通过将多个资源合并成单个资源并修复引用来删除重复资源的工具。

Windows
MacOS
Linux

替换引用工具(Replace References Tool) 在编辑器中提供了一种将多个资源合并成一个资源的简单方法。例如,考虑到某个在开发过程中进行了多次复制的纹理,由于存储了相当于同一纹理的多个副本,从而造成了资源浪费。替换引用工具允许用户根据需要选择所有这些使用,并让它们都指向纹理的一个特定实例。

虽然虚幻引擎的仅重新导入源资源功能大大减少了资源浪费,但如果您尝试两次添加完全相同的文件(相同的名称和路径),它仍可以在多人游戏中出现。

使用替换引用工具

虽然资源合并使用起来相当简单,但必须谨慎操作才能正确利用。

调用替换引用工具

若要访问该工具,只需在 内容浏览器(Content Browser) 中选择至少一项您希望在合并过程中使用的资源。然后,单击右键 并在出现的上下文菜单中,单击"替换引用(Replace References)"。替换引用(Replace References)对话框随即出现,其中填充了在召唤该工具时选择的所有资源。您可以通过将其他资源从 内容浏览器(Content Browser) 拖至该对话框的主要部分来添加它们。

合并通常仅限于选择同一类型的对象,但对纹理和材质则存在一些例外。如果没有看到替换引用(Replace References)选项或者不允许拖放操作,那么您应确保您只选择了同一类型的资源!如果您不小心添加了不希望添加的资源,您可以通过选择它并按下键盘上的 删除(Delete) 键来将其从对话框中删除。

Consolidate1.png

这里有一个被复制了多次的纹理!选择所有副本并 单击右键 将提供替换引用(Replace References)选项。

合并资源

当您在对话框中填充了想要在合并过程中使用的所有资源后,选择其中一个资源作为"目标合并资源",然后单击 合并资源(Consolidate Assets)。对列表中没有选择的资源的所有引用将被替换为对您所选择的资源的引用,同时将在流程中删除所有未选择的资源。

合并资源(Consolidate Assets)按钮将显示为灰色(且不可用),直至对话框中出现了至少两个资源且其中至少一个资源已被选中。

Consolidate2.PNG

在替换引用(Replace References)对话框中,选择一个资源会将其标记为"目标合并资源"。

Consolidate2.1.PNG

单击合并资源(Consolidate Assets)后,删除资源(Delete Assets)对话框随即出现,该对话框允许您删除不再引用因而不再需要的资源。单击 删除(Delete)

Consolidate3.png

所有重复项都已合并到选定资源中!

保存已更新的包

合并对话框在左下角提供保存已更新的包选项。如果选中此选项,将在合并操作完成时提示您保存流程所更新的任何UAsset。这种方法很方便,可以确保受合并影响的所有UAsset都正确保存,而不必您亲自在 内容浏览器(Content Browser) 中查找。如果由于某种原因合并失败或发生错误,UAsset将不会进行保存,您将收到相应的警告。

替换引用工具的工作方式

实际的合并过程分为多个步骤。首先,对于要合并的任何有效对象,该工具尝试在已加载的且位于内存中的对象/UAsset中将这些对象的所有引用替换为"目标合并对象"的引用。这意味着,如果您已经打开了一个图或UAsset,而它引用了其中一个要合并的对象,该工具将尝试立即更新它。接下来,该工具将尝试直接删除要合并的对象(可能会失败,请参阅限制和警告(Limitations and Caveats) )。最后,如果删除成功,该工具将[对象重定向器(object redirectors)]保留在被删除对象的位置。它们会将包含对已删除对象之引用的卸载UAsset重定向到目标合并对象。

最佳实践

  • 考虑到替换引用工具执行的性质,该工具使用不当可能会极其危险。该工具的用户应始终仔细考虑他们将要执行的任务,并决定由此产生的操作在他们资源的环境中是否有意义。虽然该工具会尝试防止一些明显错误的合并,但用户仍然应始终保持谨慎,以避免毁坏UAsset。请记住,该工具将删除已合并的资源,并将之前对它们的使用路由到选定对象;它不是执行"替换actor"型操作的替代方法。

  • 虽然替换引用工具将尝试在当前加载的且位于内存中的UAsset/图中强行替换对要合并的对象的引用,但最好的方法是在使用该工具时尽可能少地引用要合并的对象,从而最大限度地提高成功合并的可能性。特别是,让子编辑器(例如蓝图编辑器或静态网格体编辑器)打开并利用即将合并的资源是极不明智之举。

  • 替换引用工具大量使用[**对象重定向器**],这意味着,在使用替换引用工具之后,偶尔使用Fixup Redirects Commandlet是一种务实的策略。

限制和警告

虽然替换引用工具很有帮助,但它也有一些限制和警告,如下所述:

  • 为了防止用户不慎毁坏他们的工作,替换引用工具只能针对同一类/类型的资源调用,但当所有对象都是一种材质或纹理类型时除外(这意味着,某个材质可以合并到一个贴花材质,即使它们严格意义上不是同一类型)。这一限制是为了防止可能导致崩溃的合并,例如将某个材质合并到一个静态网格体。即使在允许跨类型合并的地方,该工具也会给出一条清晰可见的警告,说明已经选择了多个类型进行合并。

  • 替换引用工具并非总是能合并用户选择的资源。如果用户选择的"目标合并资源"包含对其中一个要合并的资源的引用,则不会合并该要合并的特定资源。允许这样的操作将使"目标合并资源"引用自身,而这必定会带来问题。在合并操作结束时,用户会收到有关跳过了其中哪些资源的合并(如有)的警告。

  • 如果不能清除某个其他有效资源的所有引用,或者由于某种原因无法删除它,那么替换引用工具有时可能无法对它进行合并。这种类型的失败非常严重,会导致"部分合并",在这种情况下,资源的一些使用已经合并,而另一些使用则没有合并。这种类型的失败应该非常少见,但是如果出现这种情况,用户会收到警告,出现的对话框中将显示受影响的资源和潜在受影响的UAsset。用户 应保存任何受影响的UAsset,否则它们将接受一个可能导致灾难性后果的部分合并。

  • 正如在最佳实践(Best Practices) 中提到的,当各种子编辑器(例如Persona或蓝图编辑器)中使用潜在受影响的资源时,使用替换引用工具是极其不明智的。最后,到目前为止,大多数的子编辑器对从它们下面交换引用并没有很好的响应,所以在合并时使用子编辑器可能会导致子编辑器进入无效状态且/或可能崩溃。

  • 替换引用工具仅在操作时已加载的UAsset中替换对合并的对象的引用。它依赖于对象重定向器 来修复卸载UAsset中的剩余引用。这意味着,除非特别需要,否则应注意不要执行践踏、覆盖、删除重定向器等操作。否则,一些UAsset将获得正确修复,而另一些UAsset则不会。如前所述,使用Fixup Redirects Commandlet可以缓解这一问题。

  • 目前,一旦成功执行合并操作,建议先保存相关UAsset,然后再尝试将还引用了其中一个合并的对象的任何已卸载UAsset加载到内存中。如果先加载引用的UAsset然后再进行保存,那么当前未解决的内容浏览器/对象重定向器"错误"会导致合并的资源在浏览器中重新出现。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback