变体管理器概述

变体管理器的定义及其工作原理。

Windows
MacOS
Linux

变体管理器 是虚幻编辑器中的特殊UI面板,可用于设置关卡中Actor的多个不同配置。每个配置都称为 变体。变体管理器有助于:

  • 设置此类变体,

  • 将变体归为各个 变体集 类别,

  • 定义各个变体应控制的Actor属性,或变体应调用的函数,

  • 在虚幻编辑器中激活或"启用"不同变体。

要使用变体管理器,须启用项目的 编辑器(Editor)> 变体管理器(Variant Manager) 插件。

若使用 建筑、工程和施工(Architecture, Engineering, and Construction)自动化、产品设计和制造(Automotive, Product Design, and Manufacturing) 类别中的模板,此插件可能已默认启用。

变体管理器面板

变体管理器UI是用于名为 关卡变体集 的特定资产类型的编辑器。每次双击关卡变体集资产,变体管理器面板将打开,即可设置和使用该资产管理的变体。

变体管理器UI分为四列。

  1. 变体列:面板左侧列示此关卡变体集资产管理的所有变体和变体集。例如,上图显示了两个变体集:油漆(Paint)制动卡钳(Brake Caliper)。此类变体集包含数个变体:图像中可见的有 蓝色红色黄色黑色深灰色 油漆的变体,以及 红色 制动卡钳的变体。

  2. Actor列:在最左侧列选择变体后,第二列(Actor)列示 绑定 到此变体的所有Actor。上图选择了 蓝色车身油漆(Body Paint Blue) 变体,因此 Actor 列表包括摩托车所有喷漆件的静态网格体Actor。

    在Actor与变体之间创建 绑定 时,会在它们之间创建链接。激活变体时,绑定Actor会以某种方式响应:通过更改数据属性值,或调用函数。

  3. 属性列:在第二列中选择一个或多个绑定Actor时,第三列(属性)显示此变体中已 采集 的此类Actor的属性。上图中采集了 Material[0]Material[1] 的属性;这些材质决定了表面的可见漆色。

    采集 Actor属性时,意味着在变体中存储该属性的所需值。

  4. 值列:最后,最右侧列()显示变体中存储的 属性 列中各个可见属性的值。本例中,启用 红色 变体后,变体管理器将所有绑定Actor的 Material[0] 属性设为红色车身油漆材质。

设置变体

设置场景变体的整个工作流程通常以从左到右的顺序执行上述各列。

  1. 决定场景中所需变体,以及变体归类到变体集的方式。根据这些决定,再使用左侧列提供的功能按钮来用根据变体集和变体设置变体管理器。

    利用此面板的功能按钮(大部分都可通过右键单击从快捷菜单选择选项)可新增变体集和变体,将变体从一个变体集移至另一个,重命名变体和变体集,向变体指定缩略图,以及删除不再需要的变体和变体集。

  2. 针对上述创建的各个变体,绑定一个或多个Actor。

    你可以点击 Actors 列顶部的 + 按钮,将新Actor绑定给变体。你也可以将新Actor从 世界大纲视图 面板拖放至绑定Actor列表或左侧列中的变体上,即可将其绑定到变体。也可右键单击 Actor 面板中的列表,并使用快捷菜单绑定和解绑Actor。

  3. 对于各个绑定Actor,选择要用变体管理器更改的属性。

    每次绑定新Actor时,变体管理器将自动打开一个窗口,要求选择要采集的属性。例如:

    Choose properties to capture

    可采集任何向蓝图公开的属性。若绑定的Actor是蓝图Actor,这包括在类中创建的所有变量,以及标记为可编辑实例的变量。

    你也可随时单击 属性(Properties) 列顶部的 + 按钮以便获取其他信息,或者随时右键单击绑定Actor以采集其他属性。你可以右键单击采集属性以将其从列表中移除。

    还可设置变体管理器,在变体激活时调用绑定Actor公开的函数。详情请参阅变体激活时调用函数

  4. 针对各个采集到的属性,设置变体激活时要让变体管理器应用的值。

    可随时设置采集值,方法是在变体管理器的 列中直接编辑该值。也可以通过以下方法,在虚幻编辑器UI中的其他地方修改属性值,然后更新保存的值,匹配属性的当前值:

    • 点击属性值旁边的 记录当前值(Record Current Value) 图标。

      Record the Current Value icon

    • 右键点击属性或其采集值,并从快捷菜单中选择 记录当前值(Record Current Value)

    记录当前值

    数值 列中直接更新已启用变体的采集值时,不会立即看到更改反映在关卡视口中。要查看更改的效果,再次激活变体。或右键单击属性或其采集值,然后从快捷菜单选择 应用记录值(Apply Recorded Value)

    应用记录值

若利用Datasmith 从支持设置变体的第三方应用程序(包括Autodesk VRED和3DExcite Deltagen)导入场景,且已在源场景中设置变体,则Datasmith将自动设置 关卡变体集 资产和Actor。只需在项目中创建蓝图逻辑或UMG控件,用于启用变体以响应用户交互。

自动绑定和采集

上章对逐一绑定Actor属性的方法进行了讲解,还有一种替代方法可在关卡中修改Actor时自动绑定Actor并采集属性。

使用变体管理器UI左侧 变体(Variants) 列顶部的切换按钮可切换自动绑定和采集。

禁用自动采集

启用自动采集

停用自动采集

激活自动采集

激活自动采集后,变体管理器将聆听对关卡中Actor所做的所有变更。修改变体管理器可采集的属性时,变体管理器将自动采集为已修改属性设置的新值,并将其保存在当前选中的变体内——即最左侧列橙色高亮的变体。若修改的Actor尚未绑定到选定变体,其将自动绑定。

自动绑定和采集有助于便捷设置变体。通常可按如下方式使用:

  1. 点击并选择左侧 变体 列中要修改的变体。若要在变更前开启变体的当前状态,双击变体。

  2. 将自动采集按钮切换为激活状态。

  3. 修改要绑定到选定变体的Actor。操作时,变体管理器将自动绑定修改的每个Actor并采集设置的每个新属性值。

  4. 按所需方式设置变体后,即可:

    • 点击或双击左侧 变体 列中的新变体,继续采集另一变体的属性。

    • 将自动采集按钮切换回停用状态,停止采集变更。

激活自动采集模式时需谨慎操作。若在关卡中操作时忘记已激活该模式,可能会误将多余变更记录到当前选定变体中。

在编辑器中激活变体

在运行时或在虚幻编辑器中激活变体时,变体管理器将通过绑定到该变体的Actor列表进行迭代。针对每个此类Actor,它将所有采集属性设为存储于变体中的值。它还将调用绑定Actor设置调用的任意函数。

打开变体管理器UI后,可在虚幻编辑器中激活变体。使用以下任一方式:

  • 在最左侧列中双击要激活的变体。

  • 在最左侧列中右键单击要激活的变体,并从快捷菜单中选择 启用(Switch On)

    启用

变体管理器使用小状态指示器来显示开启的变体:即采集属性与关卡中绑定Actor当前应用的值完全匹配的变体。开启变体或在关卡中手动设置相同属性值时,将出现以上情况。

停用变体

激活变体

停用变体

激活变体

欲了解运行时激活变体的详情,参见下方的运行时蓝图API

关于关卡变体集资产和Actor

每个关卡变体集资产都存储特定关卡中存在的Actor相关信息。在虚幻编辑器中打开该关卡后,可使用变体管理器UI激活不同变体。此时,在虚幻编辑器中,绑定Actor将立即更新其采集属性的值。

若仅需在虚幻编辑器中激活变体,而非在运行时激活,则只需设置关卡变体集资产。

但在打包项目中,变体往往在运行时最有用。例如,假设虚幻引擎关卡中有一个150%的车辆BOM模型,并用多个变体表示不同饰件。编辑器中切换此类不同饰件选项的功能将十分实用。但若目标是创建车辆配置器,允许最终用户选择所需饰件,则还需要查看者在运行时能控制变体。

为此,需将关卡变体集资产拖放至关卡中。从而在关卡中创建新的关卡变体集Actor,该Actor链接至用于创建它的资产。这种特殊Actor提供一个蓝图接口,可用于通过项目中创建的蓝图gameplay逻辑和UMG接口与变体交互。

每个关卡变体集资产仅限于处理单个关卡中的Actor。若打开不同关卡,变体管理器UI将不再影响新关卡中的对象。

若需控制多个不同关卡中的Actor,需为每个关卡单独创建关卡变体集资产,并逐个单独设置。若需以相同方式控制相同的Actor,可将关卡变体集资产要控制的所有Actor放到单个子关卡中,并将该子关卡添加到需要此类变体的两个关卡。

运行时蓝图API

关卡变体集Actor提供可用于在运行时与变体和变体集交互的蓝图API。此API支持两种主要用法:

  • 按名称或索引启用标识的变体。参阅下面的激活变体

  • 查询已配置变体集和变体的数据,包括其显示名称。参阅下面的访问变体数据

激活变体

若已知变体及其父变体集的名称或索引值,则可启用关卡变体集中的任何变体。

启用变体的最简单方式是,直接从引用拖到关卡变体集actor,找到 关卡变体集(Level Variant Sets) 类目,并选择 按索引启用变体(Switch On Variant By Index)按名称启用变体(Switch On Variant By Name)

按索引或名称启用变体

访问变体数据

可访问在变体管理器配置的所有变体集和变体的结构。

  1. 直接将Actor从引用中拖到关卡变体集,找到 关卡变体集(Level Variant Sets) 类目,并选择 获取关卡变体集(Get Level Variant Sets)

    获取关卡变体集

  2. 拥有对关卡变体集资产的引用后,直接从 返回值(Return Value) 端口拖出,找到 关卡变体集(Level Variant Sets) 类目,以访问资产中设置的变体集。

    访问变体集

    利用 获取变体集(Get Variant Set)按命名获取变体集(Get Variant Set By Name) 节点根据索引或名称检索变体集。获取变体集数(Get Num Variant Sets) 返回关卡变体集资产中配置的变体集总数。可将其与 获取变体集(Get Variant Set) 节点结合使用,在所有变体集上循环:

  3. 获取到对变体集的引用后,直接从其 返回值(Return Value) 端口拖出,找到 变体集(Variant Set) 类目,处理变体集包含的数据。

    访问变体集中的数据

    可利用 获取显示文本(Get Display Text) 节点获取在变体管理器UI中为变体集设置的名称。

    也可使用类似于访问变体集本身时所用的一组节点来访问变体集中的变体。使用 获取变体(Get Variant)按名称获取变体(Get Variant By Name) 节点根据索引或名称检索变体。获取变体数(Get Num Variants) 返回此变体集中配置的变体总数。可将其与 获取变体(Get Variant) 节点配合使用,在变体集中的所有变体上循环,如上述所示循环变体集。

  4. 获取到对变体的引用后,直接从其 返回值(Return Value) 端口拖出,找到 变体 类别,以获取其显示名称,将其启用并访问其绑定Actor。

    访问变体中的数据

此示例蓝图图表使用上述方法在所有已配置变体集和变体上进行循环迭代。它将每个变体集和变体的名称列示在屏幕和输出日志中。

Copy Node Graph

要执行其他操作,可使用同类方法在变体集和变体上迭代。只需一点想象力和UMG常规知识,便可使用此类信息编写UI系统,该系统可自动创建UI控件,反映在关卡变体集资产中配置的变体集和变体。

欲了解在蓝图中执行操作的相关背景信息,请参阅蓝图可视化脚本 。欲了解使用UMG创建用户界面的方式,请参阅UMG UI设计器文档

制作人员

本页所用车辆模型由Allegorithmic 友情提供。

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