概述
虚拟摄像机组件(VCamComponent) 是支持在 虚幻引擎(Unreal Engine) 中编译自定义虚拟摄像机的基本组件。
借助VCamComponent,用户可以添加自定义 修饰符(Modifier) 和 输出提供程序(Output Provider) ,从而驱动虚幻引擎中的 过场动画摄像机(Cine Camera) 。
目标
此快速入门指南旨在引导你使用虚拟摄像机组件完成创建虚拟摄像机的基本步骤。
目的
学习完本教程后,你将了解以下内容:
-
如何在场景中放置摄像机以及添加VCamComponent。
-
如何向摄像机添加修饰符以自定义其行为。
-
如何添加基本键输入以启用和禁用修饰符。
-
如何使用不同的输出提供程序。
-
如何使用连接点将输入操作从修饰符传递到控件。
-
如何自定义你的按钮,以便在不同的场景中复用它。
1 - 必要设置
在开始之前,你必须在项目中启用相应的插件。
-
点击 设置(Settings) > 插件(Plugins) 以打开 插件(Plugins) 菜单。
-
搜索 虚拟摄像机(Virtual Camera) 插件,并 启用 它。
-
重启编辑器。
阶段成果
你现在可以开始创建虚拟摄像机了。
2 - 创建虚拟摄像机
虚拟摄像机组件适用于包含了过场动画摄像机组件的Actor。在本示例中,为方便起见,我们将使用过场动画摄像机Actor。
-
在 放置Actor(Place Actors) 面板上,选择 过场动画(Cinematic) 类别,然后点击 过场动画摄像机Actor(Cine Camera Actor) 并将其拖动到你的场景。
-
选择过场动画摄像机Actor之后,前往 细节(Details) 面板并选择 CameraComponent 。
-
点击 添加组件(Add Component) 按钮,搜索并添加 VCam 组件。确保VCam组件是CameraComponent的子项。
-
选择 摄像机Actor(Camera Actor) ,然后在组件层级中选择 VCam 组件。
-
现在可以看到 虚拟摄像机(Virtual Camera) 分段下提供了各种属性。
这些属性如下:
属性 | 说明 |
---|---|
启用(Enabled) | 此开关启用和禁用整个虚拟摄像机组件。 |
Live Link主体(Live Link Subject) | 这是通过Live Link插件使用的主体。该组件使用主体的摄像机信息来驱动场景中的摄像机。 |
将视口锁定到摄像机(Lock Viewport to Camera) | 将从虚拟摄像机的视点渲染的视口。 |
禁用Sequencer生成的组件(Disable Component when Spawned by Sequencer) | 当虚拟摄像机组件由序列生成时,禁用该组件。这可以防止你在运行包含设置为可生成的VCam组件的序列(Sequence)时,两个VCam组件可能同时变为激活状态的情况。 |
目标视口(Target Viewport) | 这是组件将用于渲染其视图的编辑器视口。 |
输出提供程序(Output Providers) | 包含所有输出设备目标的列表。 |
修饰符上下文(Modifier Context) | 一个可选对象,包含在所有修饰符之间共享的任意数据。 |
修饰符堆栈(Modifier Stack) | 包含添加到组件的所有修饰符的列表。 |
阶段成果
你已经在场景中放置了过场动画摄像机Actor并添加了虚拟摄像机组件。你现在可以添加 修饰符(Modifiers) ,自定义你的摄像机。
3 - 添加修饰符
修饰符(Modifier) 是一个专门的蓝图类,你可以将其添加到虚拟摄像机中来创建自定义效果和行为。使用修饰符,你可以通过虚拟摄影机模拟真实摄影机行为,如摄影机晃动、焦点调整和曝光更改。你可以使用蓝图或 C++ 创建修饰符。
你可以将多个修饰符添加到唯一的虚拟摄影机渲染 堆栈 ,以将效果或行为应用到你的项目的虚拟摄影机。堆栈按从上到下的顺序应用和渲染修饰符。
创建修饰符
如需创建新的VCam修饰符蓝图:
-
在内容浏览器中,点击 (+)添加((+) Add) ,然后选择 VCam > VCam修饰符(VCam Modifier) 。
-
虚幻编辑器会提示你添加输入映射上下文。如果你希望修饰符借助增强输入支持输入,则必须添加输入映射上下文。如果你不想使用增强输入,可以跳过添加输入映射上下文步骤。
-
将你的蓝图命名为
VCM_LookAt
,然后双击将其打开。
设置Actor引用变量
在修饰符蓝图中,你必须定义一个 Actor引用变量(Actor Reference Variable) 来引用虚拟摄像机跟踪的主体。
如需在蓝图中设置Actor引用变量:
-
在 我的蓝图(My Blueprint) 选项卡中,找到 变量(Variables) ,点击加号 (+) ,并新增一个
TargetActor
变量。 -
选择
TargetActor
变量的类型,然后在上下文菜单中找到 对象类型(Object Types) > Actor > 对象引用(Object Reference) ,将其更改为 Actor对象引用(Actor Object Reference) 。 -
在变量的 细节(Details) 面板中,启用 实例可编辑(Instance Editable) 属性。
4.保存(Save) 并 编译(Compile) 修饰符蓝图。
创建蓝图逻辑
创建了引用变量后,你现在可以构建修饰符蓝图逻辑。
如需构建蓝图逻辑,请执行以下操作:
-
在修饰符蓝图中,将
TargetActor
变量拖入 事件图表(Event Graph) ,然后在上下文菜单中选择 Get TargetActor 选项。 -
创建一个 Is Valid 节点并将其连接到 目标Actor变量(Target Actor Variables) 输出引脚。
-
使用执行引脚将图表的 Event on Apply 节点连接到 Is Valid 节点。
-
从 Event on Apply 节点的 摄像机组件(Camera Component) 引脚创建并连接一个 Get World Location 节点。
-
从 Target Actor 节点创建并连接一个 Get Actor Location 节点。
-
创建一个 Find Look at Rotation 节点,将其连接到 Get World Location 节点的 返回值(Return Value) 引脚。
-
将 Get Actor Location 节点的 返回值(Return Value) 引脚连接到 Find Look at Rotation 节点的 目标(Target) 引脚。
-
从 Event On Apply 节点的 摄像机组件(Camera Component) 引脚拖出一根引线,然后搜索并选择 Set World Rotation 。
-
将 Is Valid 节点的 Is Valid 引脚连接到 Set World Rotation 节点。将 Find Look at Rotation 节点的 返回值(Return Value) 引脚连接到 Set World Rotation 节点的 新旋转(New Rotation) 引脚。
-
保存(Save) 并 编译(Compile) 蓝图。
添加主体
你的场景必须具有供摄像机跟踪的主体对象。本示例使用一个简单的球体静态网格体对象。
如需添加主体,请执行以下操作:
-
从 放置Actor(Place Actors) 选项卡中拖动任意基本游戏对象到关卡,并将其放置到 视口(Viewport) 中。
将修饰符添加到堆栈
现在,你已经准备好将自定义修饰符添加到 修饰符堆栈(Modifier Stack) 。
-
选择你的VCamActor,在组件层级内选择 VCam 组件,找到 修饰符堆栈(Modifier Stack) ,然后点击加号 (+) 。
-
输入修饰符的名称,例如
LookAt
。添加名称后,后续你可以在蓝图中引用此修饰符。 -
点击 已生成修饰符(Generated Modifier) 的 下拉箭头 ,并从列表中选择 VCM_LookAt 。
-
展开 修饰符(Modifier) 的 默认(Default) 分段,并点击 目标Actor(Target Actor) 下拉菜单。选择你添加到关卡的 球体(Sphere) Actor。
-
保存(Save) 并 编译(Compile) 你的项目。
你现在可以启用VCam并在视口中移动目标游戏对象。摄像机会旋转以跟踪对象。
更改修饰符的行为
现在,你的摄像机将始终跟随你选择的目标Actor。你可以向修饰符引入行为,以使用蓝图打开和关闭此行为。
如需引入打开和关闭跟随,请执行以下操作:
-
在 Event On Apply 节点上,右键点击 摄像机组件(Camera Component) ,并选择 提升为变量(Promote to Variable) 。
-
在 细节(Details) 面板中,点击 高级(Advanced) 下拉菜单,找到 摄像机组件变量(Camera Component Variable) ,并选中 临时(Transient) 。
-
点击此变量并将其拖入 蓝图(Blueprint) 窗口,点击 设置摄像机组件(Set Camera Component) ,然后将其挂接到 应用时事件(Event on Apply) 执行引脚。
-
在 我的蓝图(My Blueprint) 选项卡中,找到 变量(Variables) ,点击加号 (+) ,并新增一个
ShouldLookAt
布尔变量。将此变量拖入 蓝图(Blueprint) 窗口,并选择 Get ShouldLookAt 。 -
从 ShouldLookAt 变量拖出一根引线,并选择 Branch 。如此操作,你就可以使用此布尔值来打开和关闭摄像机的LookAt行为。
-
在 设置摄像机组件(Set Camera Component)后连接此 Branch ,并将 True 附加到 IsValid**
-
在 我的蓝图(My Blueprints) 变量窗口中,拖动 摄像机组件(Camera Component) 变量,并选择 Get Camera Component 。
-
从 摄像机组件(Camera Component) 拖出一根引线,然后搜索并选择 Get World Rotation 。
-
再次从 摄像机组件(Camera Component) 拖出一根引线,然后搜索 Set World Rotation 。将 Get World Rotation 连接到 Set World Rotation 。
-
将你之前创建的 Branch 的 False 引脚连接到 Set World Rotation 。
-
保存(Save) 并 编译(Compile) 你的蓝图。现在,你可以通过我们的
ShouldLookAt
布尔值打开和关闭你的VCam组件的LookAt行为。
在下一小节中,你可以阅读有关使用增强输入,通过按键来控制布尔值以即时打开和关闭LookAt行为的信息。
阶段成果
在此部分中,你学习了如何使用蓝图创建自定义摄像机修饰符。
你还学习了如何将自定义修饰符添加到 修饰符堆栈(Modifier Stack) ,以在编辑器中操控你的虚拟摄像机。
4 - (可选)使用增强输入
VCam修饰符(VCam Modifier) 可以使用 增强输入输入操作(Enhanced Input Input Actions) 为用户提供额外的控制。
下文将介绍如何使用此系统将更多功能添加到你的修饰符。
目标
本小节的目标是向修饰符添加一个 输入操作(Input Action) ,这样我们就可以一键式启用和禁用该效果。
创建输入事件
如需创建输入事件,请执行以下操作:
-
在内容浏览器中,选择 (+)添加((+) Add) > 输入(Input) > 输入操作(Input Action) 。将你的输入命名为
IA_ToggleActivation
,然后双击将其打开。 -
如需添加输入映射上下文资产,请在 内容浏览器(Content Browser) 中右键点击,然后选择 输入(Input)> 输入映射上下文(Input Mapping Context) 。
-
将你的资产命名为
IMC_LookAt
,然后双击将其打开。 -
如需新增 映射(Mapping) ,按下加号 (+) 。在 输入操作(Input Actions) 下,选择 IA_ToggleActivation 。
-
如需激活输入操作,请将 S 设置为默认键。
-
启用 Is Player Mappable 属性,并将名称设置为 IA_ToggleActivation 。
-
在 内容浏览器(Content Browser) 中双击打开 VCM_LookAt 蓝图。
-
选择 类默认值(Class Defaults),并将 IMC_LookAt 添加到 输入映射上下文(Input Mapping Context)** 。
-
右键点击 事件图表(Event Graph) ,并在 增强操作事件(Enhanced Action Events) 下搜索并选择 ToggleActivation 。
-
将 ShouldLookAt 布尔值拖入 蓝图(Blueprint) 窗口,并选择 Get ShouldLookAt 。
-
从 ShouldLookAt 布尔值拖出一根引线,搜索并选择 Branch 。
-
从 EnhancedInputAction ToggleActivation 节点,将 已触发(Triggered) 引脚连接到 Branch 。
-
将 ShouldLookAt 布尔值拖入 蓝图(Blueprint) 窗口,并选择 Set ShouldLookAt 。
-
将 Set ShouldLookAt 附加到 True 引脚,并确保 Set ShouldLookAt 节点上的复选框未选中。
-
重复上面的步骤,再添加一个 Set ShouldLookAt 节点,并将其连接到 False 。确保在此 Set ShouldLookAt 节点上选中了复选框。
-
保存(Save) 并 编译(Compile) 你的蓝图。看到的内容应与此相似。
-
返回你的场景,并在关卡中移动 球体 Actor 时,按 S 可打开和关闭效果。
每次摄像机操作员按键时,虚拟摄像机输入系统都会执行,即使视口不在焦点上也是如此。当有人出于其他目的按下该键时,这可能会导致冲突。例如,如果有人在 内容浏览器(Content Browser) 中重命名资产并使用字母S,此操作将执行你的事件。
-
(可选)如果你想重新绑定用于 ToggleActivation 的键,可以在 IMC_LookAt 中更改默认键。
-
现在,仅当你使用 S 键切换激活时,才会执行摄像机
LookAt
行为。
阶段成果
在此小节中,你添加了在按下S键时执行的输入事件。此事件将启用和禁用修饰符的效果。
5 - 添加输出提供程序
输出提供程序(Output Provider) 系统会将虚拟摄像机的输出路由至各种提供程序,包括视口、使用远程会话协议的设备、Composure插件和各种受支持的视频捕获卡。
下面列出了可用的输出提供程序。如需查看有关如何添加所需输出提供程序的说明,请点击相关提供程序的名称:
-
视口输出提供程序
-
像素流送输出提供程序
-
虚幻远程输出提供程序
-
媒体输出提供程序
-
Composure输出提供程序
视口输出提供程序
视口输出提供程序(Viewport Output Provider) 会将虚拟摄像机的视图直接输出到编辑器中的主视口。
-
选择 VCam 组件并点击 输出提供程序(Output Providers) 旁的 + 号,将新的提供程序添加到列表中。
-
从列表中选择 视口输出提供程序(Viewport Output Provider) 选项。
-
你现在可以看到不同提供程序之间共有的属性,如下表所示。例如,点击 UMG覆层(UMG Overlay) 下拉菜单,搜索并选择 TestUMG ,将测试 控件 添加到视口中。
属性 说明 是否激活(Is Active) 启用和禁用提供程序。 UMG覆层(UMG Overlay) 覆盖在图像输出上面的UMG控件。 使用覆盖分辨率(Use Override Resolution) 设置输出图像的自定义分辨率。在使用具有固定分辨率的外部设备时,此功能尤其有用。 覆盖分辨率(Override Resolution) 这是输出图像的固定分辨率。 -
最后,点击复选框,将 输出提供程序(Output Provider) 设置为 激活(Active) 。
现在,你应该会在场景中的主视口上看到覆层。这个示例说明了如何自定义摄像机输出来满足你的特定需求。
像素流送输出提供程序
像素流送输出提供程序(Pixel Streaming Output Provider) 是VCam的主要输出提供程序。它会将主编辑器视口输出到使用WebRTC连接的远程设备,包括Live Link VCam应用。你可以使用通过此方法连接的所有兼容设备,包括网络浏览器。
像素流送在 像素流输出提供程序(Pixel Streaming Output Provider) 的一个实例上进行完全配置,无需额外设置,但VCam仅支持一个流送 。
使用远程会话的iOS设备设置
从App Store将 Live Link VCam应用 下载到支持 ARKit 的iOS设备,并启动该应用。

连接你的设备
-
在你的虚拟摄像机Actor上选择 VCam 组件,然后从 输出提供程序(Output Provider) 下拉列表中选择 像素流送提供程序(Pixel Streaming Provider) 。
-
更改输出提供程序后,确保在新选择的输出提供程序上选中了 是否激活(Is Active) 。 
如需了解有关如何使用虚幻媒体框架的更多信息,请查看媒体框架文档。
Composure输出提供程序
Composure输出提供程序(Composure Output Provider) 会将虚拟摄像机的输出发送到[Composure插件](https://docs.unrealengine.com/5.0/zh-CN/real-time-compositing-with-composure-in-unreal-engine/)可以直接使用的渲染目标。此外,你还可以指定将用于渲染摄像机视图的 Composure图层目标(Composure Layer Targets) 。

阶段成果
在此小节中,你学习了如何将不同的输出提供程序添加到虚拟摄像机组件。你现在可以使用虚拟摄像机直接输出到编辑器视口,或利用像素流送和远程会话协议输出到外部设备。
你还学习了如何发送输出,以供虚幻媒体框架和Composure插件处理。
6 - (可选)使用连接点将输入操作从修饰符传递到控件
修饰符连接点的使用是一项试验性功能
在上一小节中,你在修饰符中创建了一个输入操作,并学习了将其映射到硬件输入。虽然我们是围绕硬件输入的想法开发了增强输入,但它也被虚拟摄像机利用,通过使用输入注入和VCam连接点来重新映射UMG输入。
下面介绍如何使用这个系统创建一种UMG控件,你可以将其快速重新映射到修饰符,而不需要进行硬引用或类型转换。
目标
本小节的目标是创建一个 VCam控件 ,你可以使用 VCam连接(VCam Connections) 和 连接点(Connection Points) 将其重新映射到 修饰符 上两个不同的功能。
向修饰符添加连接点
如需向修饰符添加连接点,请执行以下操作:
-
打开你的 VCM_LookAt 修饰符,选择 类默认值(Class Defaults) 。
-
在 VCam连接点(VCam Connection Points) 分段,展开 连接点(Connection Points) ,并添加一个名为 切换激活(Toggle Activation) 的元素。
-
展开该元素,并选择你的 IA_ToggleActivation 输入操作作为 关联操作(Associated Action) 。
-
编译(Compile) 并 保存(Save) 。现在你可以使用连接点触发器激活修饰符蓝图。
创建VCam控件
VCam控件 与 用户控件 的不同之处在于,它们能够接受输入以及定义与修饰符连接点的连接。
如需创建VCam控件,请执行以下操作:
-
在内容浏览器中,点击 (+)添加((+) Add) ,找到 VCam 分段,并选择 VCam控件(VCam Widget) 。
-
将你的新控件命名为
VCW_ConnectionButton
。双击资产将其打开。系统将提示你提供 输入映射上下文(Input Mapping Context) ,但本例中不需要。若提供上下文,你的控件将按与所述使用增强输入下的 修饰符 相同的方式触发 输入操作事件 。
-
在 设计器(Designer) 中,从库中添加一个按钮。将其命名为 ConnectionButton 。
-
选择 图表(Graph) 进入蓝图脚本编写图表,然后选择 类默认值(Class Defaults) 。
-
在 VCam连接(VCam connections) 分段下,展开 连接(Connections) 数组,然后点击加号 (+) 添加一个元素
-
将此元素命名为 Button ,并将其展开以查看其属性。
属性 说明 必备接口(Required Interfaces) 如果一个连接列出了必备接口,它将不会连接到未实现该接口的修饰符。你可以使用它来确保修饰符提供控件所需的信息,例如滑块的边界。如需了解有关蓝图接口的更多信息,请参阅蓝图接口文档。 可选接口(Optional Interfaces) 并非成功连接所必需的可选接口。你可以使用它来存储修饰符可用来提供可选信息(例如按钮颜色)的接口。 需要输入操作(Requires Input Action) 此字段将定义连接是否要求你在目标 修饰符连接点(Modifier Connection Point) 的 关联操作(Associated Action) 属性中提供输入操作。 操作类型(Action type) 如果启用了 需要输入操作(Requires Input Action) ,则使用此属性指定成功连接所需的输入操作类型。 手动配置连接(Manually Configure Connection) 此字段允许你指定目标修饰符和连接点名称。你可以暂时将此字段留空。你需要在已汇编HUD中配置此属性。 -
将 需要输入操作(Requires Input Action) 属性切换为启用,并将 操作类型(Action Type) 设置为 数字(布尔)(Digital (bool)) 。
-
返回你的 事件图表(Event Graph)> 我的蓝图(My Blueprint)> <你的按钮> > 事件(Events) ,并添加一个 点击时(On Clicked) 事件。
-
右键点击 事件图表(Event Graph) ,并在 VCam连接(VCam Connections) 下搜索 Get Connections 。
-
从 Get Connections 节点连出引线,并搜索 Find 。将 键(key) 设置为与连接名称匹配的 Button 。
-
从输出引脚连出引线,然后添加 Get Connected Modifier > Get Owning VCam Component > Inject Input For Action 。 确保 Get Owning VCam Component 的输出引脚连接到 Inject Input For Action 上的 目标(Target)** 输入。
-
右键点击 原始值(Raw Value) 输入并选择 拆分结构体引脚(Split Struct Pin) 。将 Inject Input For Action 的 原始数值类型(Raw Value Type) 设置为 布尔(Bool) (匹配你的连接上定义的 操作类型(Action Type) ),并将 点击时(On Clicked) 的执行引脚连接到 Inject Input For Action ** 。
-
从你的 Find 节点连出引线,并添加 Get Connected Input Action 。将结果连接到 Inject Input For Action 上的 操作(Action) 引脚。**这样可以确保你调用的操作与修饰符的连接点指定的操作相同。
-
将 原始值X(Raw Value X) 浮点值设置为1。 这可以确保当你按下按钮时,你的 输入操作(Input Action) 收到的值为 True ,从而模拟硬件按钮的按下。
-
编译(Compile) 并 保存(Save) 。
创建HUD来管理你的连接
如需创建HUD,请执行以下操作:
-
在 内容浏览器(Content Browser) 中点击右键并找到 VCam > VCam控件(VCam Widget) 。将你的新控件命名为
VCW_ConnectionHUD
。双击资产将其打开。 -
在 库(Library) 中,找到并添加你的 连接按钮(Connection Button) 。
-
通过将 连接按钮(Connection Button) 控件拖入 层级(Hierarchy) 来添加它,并找到 细节(Details) 面板。
-
如需防止HUD在指定时成为全屏按钮,请在 画布面板(Canvas Panel) 中封装VCW_ConnectionButton。
.
-
在 VCam连接(VCam Connections) 分段下,展开 连接点(Connection Points) 并找到你的 Button 连接。
-
展开该连接,并启用 手动配置连接(Manually Configure Connection) 。
-
出现一个新的 连接目标设置(Connection Target Settings)字段。 将 目标修饰符(Target Modifier) 设置为 查看(Look At) (你之前进行配置时在修饰符堆栈中为该修饰符指定的名称),并将 目标连接点(Target Connection Point) 设置为 切换激活(Toggle Activation) (你为 VCM_LookAt 上的 连接点(Connection Point)** 指定的名称)。
-
保存(Save) 并 编译(Compile) 。
-
返回你的场景Actor上的 Vcam组件(Vcam Component) ,添加一个任意类型的 输出提供程序 。
-
将 UMG覆层(UMG Overlay) 设置为你的 VCW_ConnectionHUD 。
-
在VCam组件(Vcam Component)上,同时启用 是否激活(Is Active) 和 已启用(Enabled) 复选框。
如果这些复选框已启用,请将其关闭,然后再次打开以刷新Actor。
-
在视口中点击你的按钮。它现在应该会切换你的修饰符的激活。
-
(可选)如果你要将按钮重新绑定到新的 连接点(Connection Point) ,请返回到 VCW_ConnectionHUD ,并更改 目标修饰符(Target Modifier) 和 目标连接(Target Connection) 以匹配你所需的新目标。
阶段成果
在本小节中,你学习了如何使用VCam控件、连接和连接点来创建可以快速轻松地重新映射和重新配置的UMG元素。
你还学习了如何发送输出,以供虚幻媒体框架和Composure插件处理。
后续步骤
你已了解如何构建自己的虚拟摄像机,请前往[虚拟摄像机Actor快速入门](https://docs.unrealengine.com/5.0/zh-CN/using-virtual-cameras-in-unreal-engine/),了解虚幻引擎中自带的预构建 虚拟摄像机Actor(Virtual Camera Actor) 。
7 - (可选)自定义你的按钮
你可以通过连接和蓝图接口自定义你的虚拟摄像机按钮,让按钮根据修饰符的状态改变颜色。你可以利用此功能将按钮复用于不同的目的,例如将同一个按钮与录制功能和屏幕截图功能配对,每种功能用不同的颜色表示。
这是高级功能,要求你已经设置虚拟摄像机Actor。
如果你以这种方式自定义按钮,它的某些功能可能与虚拟摄像机快速入门中说明的标准功能不同。
创建蓝图资产
首先,创建一个可连接到你的修饰符的蓝图资产。
如需创建蓝图资产,请执行以下操作
-
在 内容浏览器(Content Browser) 中,右键点击 添加(+)(Add (+)) ,然后选择 蓝图(Blueprints) > 蓝图接口(Blueprint Interface) 。将新资产命名为
BPI_ConnectionButton
。 -
双击打开资产。
-
将现有函数 重命名 为 Get Button Color 。
-
在 细节(Details) 面板中,进入 输入(Inputs) ,新增一个类型为 名称(Name) 的参数,将其命名为 Connection Point 。
-
在 输出(Outputs) 分段下,新增两个参数。
-
创建一个类型为 线性颜色(Linear Color)** 的参数,并将其命名为 Color 。**
-
创建一个类型为 布尔(Bool) 的参数,并将其命名为 Success 。
-
编译(Compile) 并 保存(Save) 。
编译你的蓝图资产
如需生成资产以便连接,你必须在VCam修饰符中选择并编译你的蓝图资产。
如需选择资产,请执行以下操作:
-
返回你的 VCM_LookAt 修饰符。
-
打开 类设置(Class Settings)。
-
在 接口(Interfaces) 下,找到 已实现的接口(Implemented Interfaces) ,并选择 添加(Add) 。
-
选择 BPI_ConnectionButton 。
-
编译(Compile) 。
使用蓝图连接你的按钮
现在你可以使用蓝图连接你的按钮。在这一步,你需要定义按钮用哪种颜色表示所选功能。
如需连接按钮,请执行以下操作:
-
在 我的蓝图(My Blueprint) 选项卡中,展开 接口(Interfaces) 分段。你应该会看到 Get Button Color 函数。如需编辑该函数,请双击它。
-
从你的 Connection Point 输出引脚连出引线,**并添加一个 Switch On Name** 节点。
-
将默认的 Return 节点连接到 Switch on Name 上的 默认(Default) 引脚。确保该Return上的 Success 为 False** 。
-
选择 Switch on Name 节点。在其 细节(Details) 面板中,添加一个名为 切换激活(Toggle Activation) 的 引脚(Pin) (以匹配你的连接点名称)。
-
在图表中点击右键,并再添加一个 Return 节点。将其连接到 Switch on Name 上新增的 切换激活(Toggle Activation) 引脚。
-
将你的 ShouldLookAt 布尔值拖入 蓝图(Blueprint) 窗口,并选择 Get ShouldLookAt 。
-
从 ShouldLookAt 连出引线,并添加一个 Select Color 节点。
-
将 A 设置为绿色,将 B 设置为红色。
-
将 Select Color 的 返回值(Return Value) 连接到已连接到 切换激活(Toggle Activation) 的 Return 节点上的 颜色(Color) 引脚。
定义规则
接下来,你必须定义控件如何请求、解析和应用你在上面刚刚配置的信息。
如需定义规则,请执行以下操作:
-
返回到[你之前创建的] VCW_ConnectionButton (#连接按钮),然后找到 类默认值(Class Defaults)> VCam连接(VCam Connections)> 连接(Connections) 。
-
展开你的 Button 连接,点击 必备接口(Required Interfaces) 或 可选接口(Optional Interfaces) 旁的 + ,并添加 BPI_ConnectionButton 。
-
如果将此接口添加到 必备接口(Required Interfaces) 中,则你的修饰符必须已实现 BPI_ConnectionButton ,连接方能成功。
-
如果将其添加到 可选接口(Optional Interfaces) ,无论你的修饰符是否实现了该接口,连接都会成功。
-
-
右键点击图表,转到 VCam连接(VCam Connections) ,并添加 Get Connections 节点。
-
从 Get Connections 节点连出引线并搜索 Find 。将 键(key) 设置为 Button 。确保它与你的连接名称匹配。
-
从输出引脚连出引线,并添加 Get Connected Modifier 。
-
从 Get Connected Modifier 的 返回值(Return Value) 连出引线,并添加 IsValid 。将 Event Tick 的执行引脚连接到 Is Valid** 。
-
从 Get Connected Modifier 的 返回值(Return Value) 连出引线,并在 BPI_ConnectionButton 分段添加 Get Button Color (Message) 。
-
从 Find 的输出引脚连出引线,并添加一个 Get Connection Point Name 节点。将 返回值(Return Value) 连接到 Get Button Color 的 Connection Point 输入。
-
将 Is Valid 的执行引脚连接到 Get Button Color 。
-
从 Success 引脚连出引线,并添加一个 Branch 。
-
在 我的蓝图(My Blueprints) 选项卡中,转到 变量(Variables) 分段,然后拖入你的按钮。将其作为 Get 节点放置,并置于 Branch 附近。
-
从 Get 节点连出引线,并添加 Set Background Color 。将 Get Button Color 的 Color 输出引脚连接到 Set Background Color 的 按钮中颜色(In Button Color)** 引脚。
-
将Branch的 True 执行引脚连接到 Set Background Color 。
-
编译(Compile) 并 保存(Save) 。
最终结果
现在你可以返回到世界中你的Actor的VCam组件,打开再关闭 已启用(Enabled) 进行刷新。你的按钮现在应该会根据布尔值的状态改变颜色。