虚拟摄像机(Virtual Camera) (简称 VCam )组件提供了一个模块化系统,用于使用UMG控件编辑过场动画摄像机组件。VCam组件是用于在虚幻引擎中构建类似VCam Actor这样的自定义虚拟摄像机的基本组件。构建你自己的VCam的优势在于,你可以通过蓝图使用修饰符和输出提供程序实现自定义功能。
虚拟摄像机架构
VCam组件的架构分三个方面:模型、视图和控制器。
- 修饰符 表示模型。它们实现的逻辑用于更改过场动画摄像机组件上的属性。修饰符包含连接点,并且它们可以选择公开输入操作(增强输入),后者可以由UMG控件调用。
- 输出提供程序 是视图。它们创建并渲染控件(可能是流送它们)。通常,输出提供程序创建UVCamWidget,这些是可以连接到修饰符连接点的特殊控件。控件通过两种方式与修饰符交互:
- 简单 - 触发修饰符订阅的输入操作,并通过连接公开。
- 高级 - 查询修饰符是否实现特定自定义接口。
- 只要启用了UVCamComponent, UVCameraSubSystems 就存在。这相当于LocalPlayerSubSystem。
- 一个重要的此类系统是InputVCamSubsystem,它允许UVCamComponents绑定到输入设备,类似于发行的游戏中玩家控制器的作用。
要求和先决条件
要继续本指南,你必须首先:
- 按照使用Live Link控制虚拟摄像机Actor的"必需设置"小节操作。
- 在你的项目中启用所有必要插件。
- [可选] 使用支持的iOS设备。
- [可选] 从iOS应用商店下载并安装Live Link VCAM应用。
- [可选] 你的虚幻引擎项目和运行Live Link VCAM应用的iOS设备共享的网络连接。
一些输出提供程序需要使用iOS设备。如需关于其用法的更多信息,请参阅此页面的VCam输出提供程序小节。
设置自定义虚拟摄像机工作流程
虚拟摄像机由两个组件构成: 过场动画摄像机(Cine Camera) 和 VCam 。这两个组件是构建可用的自定义虚拟摄像机的基础。
要构建自定义虚拟摄像机,请执行以下操作:
- 使用关卡编辑器中的 放置Actor(Place Actors) 面板将 过场动画摄像机(Cine Camera) 添加到场景。
- 选中过场动画摄像机,转至细节面板,点击 添加(Add) (+)组件菜单,并从列表选择 VCam 组件。
- 点击 VCam 组件并将其拖曳到 CameraComponent 上,使其成为过场动画摄像机的子项。
如果VCam组件不是Camera、Component的直接子项,你的虚拟摄像机将无法生效。
你的组件层级应该如下图所示:
VCam组件有以下属性:
| 属性 |
说明 |
| 启用(Enabled) |
此开关启用和禁用整个VCam组件。 |
| 角色(Role) |
指定在虚拟制片环境中要分配给此虚拟摄像机的角色类型。 |
| Live Link主体(Live Link Subject) |
这是在整个Live Link插件中使用的主体。该组件使用主体的摄像机信息从连接Live Link的设备驱动场景中的摄像机。 |
| 视口锁定器(Viewport Locker) |
从虚拟摄像机视角渲染的视口。 |
| 由Sequencer生成时禁用组件(Disable Component when Spawned by Sequencer) |
由序列生成时禁用VCam组件。这可防止在播放的序列包含的VCam组件被设置为可生成对象时,两个VCam组件可能同时处于激活状态的情况。 |
| 输入配置文件(Input Profile) |
指定要使用的配置文件,其已映射虚拟摄像机的输入。如需详细了解输入配置文件,请参阅控制虚拟摄像机功能按钮的输入。 |
| 输入设备设置(Input Device Settings) |
启用和禁用哪些可以用作输入设备(键盘、游戏手柄和鼠标)。你还可以为输入选择日志记录类型。 |
| 输出提供程序(Output Providers) |
包含所有输出设备目标的列表。如需更多详细信息,请参阅此页面的输出提供程序小节。 |
| 修饰符上下文(Modifier Context) |
一个可选对象,包含在所有修饰符之间共享的任意数据。 |
| 修饰符堆栈(Modifier Stack) |
包含添加到组件的所有修饰符的列表。如需更多详细信息,请参阅此页面的修饰符小节。 |
| 高级设置 |
|
| 禁用多用户接收器上的输出(Disable Output on Multi User Receiver) |
如果虚拟摄像机在多用户会话中并且摄像机是来自会话的接收器,则禁用输出。 |
| 更新频率(Update Frequency) |
指示在多用户模式下发送摄像机更新的频率。最小值为11毫秒。不推荐使用低于30毫秒的值。需要更高的刷新率时,考虑改用Live Link重播来流送摄像机数据。 |
VCam修饰符
虚拟摄像机 修饰符 是特殊的蓝图资产。它们包含构建自定义功能的逻辑和 输入操作(Input Actions) 。你可以使用它们创建独特的效果和行为(在蓝图或C++中),例如摄像机晃动、调整焦点,以及限制摄像机沿轴移动。
虚拟摄像机可以应用任意数量的修饰符,创建应用不同行为和效果的修饰符堆栈。堆栈中的每个修饰符会按自上而下的顺序应用和渲染。
虚幻引擎包含一组用于标准VCam Actor的默认修饰符。你可以探索其中的每个修饰符及其逻辑。你可以在 引擎(Engine)> 插件(Plugins)> 虚拟摄像机内容(VirtualCamera Content)> 修饰符(Modifiers) 文件夹中找到它们。
VCam输出提供程序
虚拟摄像机 输出提供程序(Output Provider) 系统会将虚拟摄像机的输出重路由到各种提供程序,例如视口和使用远程会话协议的设备。
以下输出提供程序可供选择:
要将输出提供程序添加到你的虚拟摄像机,请执行以下操作:
- 选择虚拟摄像机的 VCam 组件。
- 在 细节(Details) 面板中,找到 输出提供程序(Output Providers) 分段,并点击 添加(+) 图标将新提供程序添加到堆栈。
-
使用添加的 索引(Index [0]) 元素旁边的下拉菜单选择列表中的某个 输出提供程序(Output Providers) 。
堆栈中的每个输出提供程序按自上向下的顺序应用和渲染。
视口输出提供程序
视口(Viewport) 输出提供程序接受场景中虚拟摄像机的视图,并直接将其输出到关卡编辑器的视口。
视口输出提供程序包括以下属性:
| 属性 |
说明 |
| 处于激活状态(Is Active) |
如果设置此项,此输出提供程序会对每个帧执行。 |
| 目标视口(Target Viewport) |
选择要用于此虚拟摄像机的视口。 |
| UMG覆层(UMG Overlay) |
要由此输出提供程序渲染的UMG类。 |
| 使用重载分辨率(Use Override Resolution) |
使用自定义值重载默认输出分辨率。
要使其生效,你必须将 处于激活状态(Is Active) 关闭,然后再打开。
|
| 重载分辨率(Override Resolution) |
在设置了 使用重载分辨率(Use Override Resolution) 时应用自定义分辨率。 |
| Gameplay视图目标策略(Gameplay View Target Policy) |
在游戏世界中,例如在编辑器中运行(PIE)或发行游戏中,这会确定应该将哪个玩家控制器的视图目标设置为拥有过场动画摄像机Actor。
多个输出提供程序可能有策略集,并且策略可能选择相同的玩家控制器来设置其视图目标。解决这一冲突的方法是,检查玩家控制器是否已经有过场动画摄像机Actor作为视图目标,如果有,则不会使用该策略。这意味着,你可以根据需要对VCam组件中的输出提供程序数组排序,最前面的策略将获得更高的优先级。
|
像素流送输出提供程序
像素流送(Pixel Streaming) 输出提供程序将编辑器视口输出到使用WebRTC连接的远程设备,这包括用于iOS的Live Link VCam应用。此方法适用于可以接收流送数据的兼容设备,包括Web浏览器。它是虚拟摄像机的主要输出提供程序。
像素流送在像素流送输出提供程序的实例上配置,不需要额外设置。VCam组件仅支持单个流。
像素流送输出提供程序包括以下属性:
| 属性 |
说明 |
| 处于激活状态(Is Active) |
如果设置此项,此输出提供程序会对每个帧执行。 |
| 目标视口(Target Viewport) |
设置要用于此虚拟摄像机的视口。 |
| UMG覆层(UMG Overlay) |
要由此输出提供程序渲染的UMG类。 |
| 使用重载分辨率(Use Override Resolution) |
使用自定义值重载默认输出分辨率。
要使其生效,你必须将 处于激活状态(Is Active) 关闭,然后再打开。
|
| 重载分辨率(Override Resolution) |
在设置了 使用重载分辨率(Use Override Resolution) 时应用自定义分辨率。 |
| 来自Composure输出提供程序索引(From Composure Output Provider Index) |
如果你使用Composure输出提供程序中的输出,请在此处指定。 |
| 匹配远程分辨率(Match Remote Resolution) |
启用后,流送的虚幻引擎视口将匹配远程设备的分辨率。 |
| 启用ARKit跟踪(Enable ARKit Tracking) |
使用来自iOS设备上的Live Link VCAM应用的变换数据,控制对应的过场动画摄像机Actor。 |
| 防止编辑器待机(Prevent Editor Idle) |
在编辑器不是前台应用程序时,防止它移至后台。当编辑器被最小化,或在使用另一个应用程序时,这可能会使编辑器无响应或运行缓慢。 |
| 自动设置Live Link主体(Auto Set Live Link Subject) |
启用后,所属VCam组件的Live Link主体会被设置为此输出提供程序创建的主体。该提供程序也必须启用。 |
| 流送器ID(Streamer Id) |
设置此流的名称以报告给信令服务器。如果未提供值,将使用默认值。我们推荐你为每个流提供唯一名称,因为如果流送器ID与其他VCam的流送器ID相同,你可能会遇到问题。 |
| Gameplay视图目标策略(Gameplay View Target Policy) |
在游戏世界中,例如在编辑器中运行(PIE)或发行游戏中,这会确定应该将哪个玩家控制器的视图目标设置为拥有过场动画摄像机Actor。
多个输出提供程序可能有策略集,并且策略可能选择相同的玩家控制器来设置其视图目标。解决这一冲突的方法是,检查玩家控制器是否已经有过场动画摄像机Actor作为视图目标,如果有,则不会使用该策略。这意味着,你可以根据需要对VCam组件中的输出提供程序数组排序,最前面的策略将获得更高的优先级。
|
虚幻远程输出提供程序
虚幻远程(Unreal Remote) 输出提供程序会将主视口输出到使用 远程会话协议(Remote Session Protocol) 连接的远程设备,例如iOS设备上的Live Link VCAM应用。
虚幻远程需要对你的项目进行额外配置,才能连接到使用远程会话的外部设备。如需更多信息,请参阅此页面的设置虚幻远程输出提供程序小节。
虚幻远程输出提供程序包括以下属性:
| 属性 |
说明 |
| 处于激活状态(Is Active) |
启用后,此输出提供程序会对每个帧执行。 |
| 目标视口(Target Viewport) |
选择要用于此虚拟摄像机的视口。 |
| UMG覆层(UMG Overlay) |
选择要由此输出提供程序渲染的UMG类。 |
| 使用重载分辨率(Use Override Resolution) |
使用自定义值重载默认输出分辨率。
要使其生效,你必须将 处于激活状态(Is Active) 关闭,然后再打开。
|
| 重载分辨率(Override Resolution) |
在设置了 使用重载分辨率(Use Override Resolution) 时应用自定义分辨率。 |
| Gameplay视图目标策略(Gameplay View Target Policy) |
在游戏世界中,例如在编辑器中运行(PIE)或发行游戏中,这会确定应该将哪个玩家控制器的视图目标设置为拥有过场动画摄像机Actor。
多个输出提供程序可能有策略集,并且策略可能选择相同的玩家控制器来设置其视图目标。解决这一冲突的方法是,检查玩家控制器是否已经有过场动画摄像机Actor作为视图目标,如果有,则不会使用该策略。这意味着,你可以根据需要对VCam组件中的输出提供程序数组排序,最前面的策略将获得更高的优先级。
|
| 端口号(Port Number) |
网络端口号。只有在要将多个远程会话设备连接到同一台PC时,才需要更改此项。 |
| 来自Composure输出提供程序索引(From Composure Output Provider Index) |
如果你使用Composure输出提供程序中的此输出,请在此处指定。 |
媒体输出提供程序
媒体(Media) 输出提供程序会将虚拟摄像机的输出发送到虚幻媒体框架支持的设备,例如Black Magic和AJA的视频捕获卡。
输出配置(Output Config) 资产用于指定要输出的媒体源类型及其需要输出到源的参数。如需详细了解这些类型的资产、其用法以及支持哪些源,请参阅[媒体框架(working-with-media\integrating-media\MediaFramework)。
媒体输出提供程序包括以下属性:
| 属性 |
说明 |
| 处于激活状态(Is Active) |
如果设置此项,此输出提供程序会对每个帧执行。 |
| 目标视口(Target Viewport) |
选择要用于此虚拟摄像机的视口。 |
| UMG覆层(UMG Overlay) |
要由此输出提供程序渲染的UMG类。 |
| 使用重载分辨率(Use Override Resolution) |
使用自定义值重载默认输出分辨率。
要使其生效,你必须将 处于激活状态(Is Active) 关闭,然后再打开。
|
| 重载分辨率(Override Resolution) |
在设置了 使用重载分辨率(Use Override Resolution) 时应用自定义分辨率。 |
| Gameplay视图目标策略(Gameplay View Target Policy) |
在游戏世界中,例如在编辑器中运行(PIE)或发行游戏中,这会确定应该将哪个玩家控制器的视图目标设置为拥有过场动画摄像机Actor。
多个输出提供程序可能有策略集,并且策略可能选择相同的玩家控制器来设置其视图目标。解决这一冲突的方法是,检查玩家控制器是否已经有过场动画摄像机Actor作为视图目标,如果有,则不会使用该策略。这意味着,你可以根据需要对VCam组件中的输出提供程序数组排序,最前面的策略将获得更高的优先级。
|
| 输出配置(Output Config) |
使用媒体框架支持的某个输出源分配媒体输出配置资产。 |
| 来自Composure输出提供程序索引(From Composure Output Provider Index) |
如果使用Composure输出提供程序中的此输出,请在此处指定。 |
Composure输出提供程序
Composure 输出提供程序会将虚拟摄像机的输出发送到渲染目标。你可以将渲染目标与Composure一起使用进行合成。你可以使用 层目标(Layer Targets) 属性指定要用于合成的元素堆栈。这些元素支持渲染UMG控件。
Composure输出提供程序包括以下属性:
| 属性 |
说明 |
| 处于激活状态(Is Active) |
如果设置此项,此输出提供程序会对每个帧执行。 |
| 目标视口(Target Viewport) |
选择要用于此虚拟摄像机的视口。 |
| UMG覆层(UMG Overlay) |
要由此输出提供程序渲染的UMG类。 |
| 使用重载分辨率(Use Override Resolution) |
使用自定义值重载默认输出分辨率。
要使其生效,你必须将 处于激活状态(Is Active) 关闭,然后再打开。
|
| 重载分辨率(Override Resolution) |
在设置了 使用重载分辨率(Use Override Resolution) 时应用自定义分辨率。 |
| Gameplay视图目标策略(Gameplay View Target Policy) |
在游戏世界中,例如在编辑器中运行(PIE)或发行游戏中,这会确定应该将哪个玩家控制器的视图目标设置为拥有过场动画摄像机Actor。
多个输出提供程序可能有策略集,并且策略可能选择相同的玩家控制器来设置其视图目标。解决这一冲突的方法是,检查玩家控制器是否已经有过场动画摄像机Actor作为视图目标,如果有,则不会使用该策略。这意味着,你可以根据需要对VCam组件中的输出提供程序数组排序,最前面的策略将获得更高的优先级。
|
| 层目标(Layer Targets) |
要将请求的UMG渲染到的Composure堆栈合成元素列表。 |
| 最终输出渲染目标(Final Output Render Target) |
分配包含最终输出的纹理渲染目标2D资产。 |
VCam输入操作
修饰符连接点是试验性的功能。
输入操作是可从修饰符蓝图映射到硬件输入的输入。增强输入是围绕将此硬件输入映射到虚拟摄像机以及通过使用注入和连接点来重新映射UMG输入的想法开发的。你可以像Live Link VCAM应用那样使用VCam控件(类似于UMG控件)控制虚幻引擎中的虚拟摄像机Actor。它们可重新映射到修饰符,无需硬引用或转型。连接点(Connection Points) 可桥接要重新映射的元素并复用VCam控件。
配置自定义虚拟摄像机的示例
指南的此部分通过示例演示了如何使用带有过场动画摄像机Actor的VCam组件设置和配置自定义虚拟摄像机。此过程将使用本页面前面介绍过的所有元素来构建简单的示例,以显示这些部分如何彼此交互和连接。
在此配置指南中,你会创建以下功能并将其应用到自定义虚拟摄像机:
- 使用过场动画摄像机和VCam组件创建自定义虚拟摄像机。
- 设置使用虚拟摄像机追踪场景中指定对象的蓝图和逻辑。
- 扩展蓝图逻辑以打开和关闭虚拟摄像机追踪对象的能力。
- 设置VCam控件以使用脚本蓝图逻辑。
- 进一步扩展蓝图逻辑,根据其状态(开/关)更改按钮的颜色。
按照本指南操作之后,你应该会更清晰地理解如何使用修饰符、输出提供程序和带连接点的输入操作,构建不同的效果和行为以用于虚拟摄像机。
创建自定义虚拟摄像机
要构建自定义虚拟摄像机,请执行以下操作:
- 使用关卡编辑器中的 放置Actor(Place Actors) 面板将 过场动画摄像机(Cine Camera) Actor添加到场景。
-
选择过场动画摄像机后,点击 细节(Details) 面板中的 添加(Add (+)) 组件菜单并从列表选择 VCam 组件。
- 点击 VCam 组件并将其拖曳到 CameraComponent 上,使其成为过场动画摄像机的子项。
你的组件层级应该如下图所示:
创建自定义修饰符
在此小节中,你将创建修饰符蓝图。你可以将此蓝图包含的行为和逻辑应用到虚拟摄像机,创建某种效果。在此示例中,你将创建的蓝图会被用于使用虚拟摄像机追踪场景中的指定对象。
指南的此部分已分解为多个较小步骤来构建VCam修饰符,请按照此工作流程实现结果:
创建修饰符蓝图
要创建VCam修饰符蓝图,请执行以下操作:
-
在内容浏览器中,点击 添加(Add (+))> VCam 并添加 VCam修饰符(VCam Modifier) 蓝图资产。将其命名为 VCM_LookAt 。
-
弹窗将提出你 选择输入映射上下文(Select Input Mapping Context)。你可以选择 跳过(Skip) 。
请参阅增强输入,详细了解输入映射资产及其用法。
你现在创建了修饰符蓝图,这将在本指南其余部分中使用。
设置Actor引用变量
在此步骤中,你将设置修饰符蓝图的图表中要使用的变量。这些变量会指定关卡中虚拟摄像机将追踪的对象。
设置此类型的事项时,对场景中Actor的所有引用都必须在修饰符蓝图中定义。
要使用Actor引用变量设置你的修饰符,请执行以下操作:
- 打开 VCM_LookAt 修饰符蓝图。
-
在 我的蓝图(My Blueprint) 面板中,找到 变量(Variables) 类别,并点击 添加(+) 图标添加新变量。
- 点击变量的文本字段,并将其名称设置为“TargetActor”。
-
点击 布尔(Boolean) 类型,将其类型更改为 对象类型(Object Types)> Actor ,并选择 对象引用(Object Reference) 。
-
在 我的蓝图(My Blueprint) 面板中选择 TargetActor 变量后,使用 细节(Details) 面板勾选 变量(Variables) 类别下 实例可编辑(Instance Editable) 的复选框。
点击变量名称旁边的 眼睛 图标相当于在 细节(Details) 面板中设置 实例可编辑(Instance Editable) 。
你在此步骤中设置的引用变量会在稍后将修饰符添加到虚拟摄像机的修饰符堆栈时用到。在关卡中工作时,设置为 实例可编辑(Instance Editable) 的变量在VCam组件的属性中可见。你可以直接在此处设置虚拟摄像机将追踪的Actor。
创建修饰符蓝图逻辑
在此步骤中,你将在VCM_LookAt修饰符蓝图的图表中创建一些初始逻辑。此逻辑被用于追踪世界中的对象,方法是使用 TargetActor 变量将其位置提供给虚拟摄像机。虚幻引擎使用此信息旋转虚拟摄像机,让该对象保持在视图中。
要将逻辑添加到你的修饰符蓝图,请执行以下操作:
- 打开 VCM_LookAt 修饰符蓝图。
- 在 我的蓝图(My Blueprint) 面板中,找到变量类别,点击 TargetActor 变量并将其拖曳到 事件图表(Event Graph) 中。选择 获取TargetActor(Get TargetActor) 。
- 拖出 TargetActor 节点的输出引脚,并添加 Is Valid 节点。
- 将 Event On Apply 节点连接到 Is Valid 节点。
- 拖出 Event On Apply 节点的 摄像机组件(Camera Component) 的输出引脚,并添加 Get World Location 节点。
1.拖出 Get World Location 节点的 返回值(Return Value) 引脚,并添加 Find Look at Rotation 节点。
- 拖出 Event On Apply 节点的 摄像机组件(Camera Component) 引脚,并添加 Set World Rotation 节点。
- 将 Is Valid 节点的 有效(Is Valid) 引脚连接到 Set World Rotation 节点。
- 从 TargetActor 节点拖出引脚,并添加 Get Actor Location 节点。
- 拖出 Get Actor Location 节点的 返回值(Return Value) 引脚,并将其连接到 Find Look at Rotation 节点的 目标(Target) 引脚。
- 拖出 Find Look At Rotation 节点的 返回值(Return Value) 引脚,并将其连接到 Set World Rotation 节点的 新旋转(New Rotation) 引脚。
- 编译(Compile) 并 保存(Save) 。
你的修饰符蓝图现在已设置完毕,你的图表应该如下图所示:
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_0" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_VariableGet_0"'
VariableReference=(MemberName="TargetActor",MemberGuid=7E8672B245E272DAA9034392D558C413,bSelfContext=True)
NodePosX=1744
NodePosY=176
NodeGuid=BF2F4FC846BB08B9C99EE9A324787C11
CustomProperties Pin (PinId=B50A7F6F4DCAA5498D8AD38FB752BCF2,PinName="TargetActor",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 4AC8905940F198E7AC1AB9B2037710F3,K2Node_CallFunction_2 81BA483240E9DC02A71F6EB96C6ABB7F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C22C3F4F4222E18C5BAA3FAB0C9E126D,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/NewBlueprint.NewBlueprint_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_0" ExportPath=/Script/BlueprintGraph.K2Node_MacroInstance'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_MacroInstance_0"'
MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=64422BCD430703FF5CAEA8B79A32AA65)
NodePosX=1920
NodePosY=96
NodeGuid=C54DD5D84F91678FB503AE83B59474E4
CustomProperties Pin (PinId=258551E944817AD172A652ABD1D05A4E,PinName="exec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4AC8905940F198E7AC1AB9B2037710F3,PinName="InputObject",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_0 B50A7F6F4DCAA5498D8AD38FB752BCF2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=12E7215D4E091BAC45E4A3A228B72230,PinName="Is Valid",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_4 5666EDF24A9E50CE89E87FBD5DB55B18,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=28706A844C1513C9A5A4F7BB25B8B494,PinName="Is Not Valid",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_1" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_CallFunction_1"'
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_GetComponentLocation")
NodePosX=1920
NodePosY=320
NodeGuid=5A4FECBD4CA724EAEEF14E8DA9D90D5D
CustomProperties Pin (PinId=874918304FFBB421973F4C98F6F157E2,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nScene Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=DC6340CD4075DEE42ACD889D4BEE5CB1,PinName="ReturnValue",PinToolTip="Return Value\nVector\n\nReturn location of the component, in world space",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_3 376497914FD38AEBD06281B2375EFEAD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_CallFunction_2"'
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.Actor"',MemberName="K2_GetActorLocation")
NodePosX=1920
NodePosY=224
NodeGuid=097D523547BA566DF69D94A49CCC12C3
CustomProperties Pin (PinId=81BA483240E9DC02A71F6EB96C6ABB7F,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nActor Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_0 B50A7F6F4DCAA5498D8AD38FB752BCF2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=DB35A8BF4EBBF691C9B0E5838CCAA38B,PinName="ReturnValue",PinToolTip="Return Value\nVector\n\nReturns the location of the RootComponent of this Actor",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_3 B78B01804B10A622C6A3858627D4CEDA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_3" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_CallFunction_3"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="FindLookAtRotation")
NodePosX=2256
NodePosY=208
NodeGuid=1F82BE0C4687B3D2BB4F1CBC7B32D145
CustomProperties Pin (PinId=0FD52FF647E6C3414676AE9368CAF236,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=376497914FD38AEBD06281B2375EFEAD,PinName="Start",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_1 DC6340CD4075DEE42ACD889D4BEE5CB1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B78B01804B10A622C6A3858627D4CEDA,PinName="Target",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_2 DB35A8BF4EBBF691C9B0E5838CCAA38B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=DFAE89C744120F146A0F19AA3028C0A5,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_4 66DBF2C7459298D609193EADCC1B164A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_4" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_CallFunction_4"'
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_SetWorldRotation")
NodePosX=2496
NodePosY=80
AdvancedPinDisplay=Hidden
NodeGuid=2931C72C498A3E59DE4385A995B567C9
CustomProperties Pin (PinId=5666EDF24A9E50CE89E87FBD5DB55B18,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 12E7215D4E091BAC45E4A3A228B72230,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=489CFEFB4CFFEDB92E4D109FCC349488,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=116CE1FD4FAD42BFAF9B23A7BACF7F22,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_1 5058456C48AC97C1F980DABF73EDA686,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=66DBF2C7459298D609193EADCC1B164A,PinName="NewRotation",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_3 DFAE89C744120F146A0F19AA3028C0A5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=75C92014434EBBA4702A60AB42360511,PinName="bSweep",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=01A2B543491D77233F632487AFCCFB37,PinName="SweepHitResult",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=8E5E8B674FE0F9470505DFB11E2E6F2D,PinName="bTeleport",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_0" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_Knot_0"'
NodePosX=1808
NodePosY=16
NodeGuid=B163B6BB402F101786F18FBE32339F60
CustomProperties Pin (PinId=511DD4974091469C69185AA4A05B6888,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=EFFFB1D7430E24600171D48E38740D48,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_1 D6E38B3346ED6462F04840A16A8B2E11,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_1" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/NewBlueprint.NewBlueprint:EventGraph.K2Node_Knot_1"'
NodePosX=2304
NodePosY=16
NodeGuid=33E52DD4430E54788FC2C6B4980F05F5
CustomProperties Pin (PinId=D6E38B3346ED6462F04840A16A8B2E11,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 EFFFB1D7430E24600171D48E38740D48,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5058456C48AC97C1F980DABF73EDA686,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_4 116CE1FD4FAD42BFAF9B23A7BACF7F22,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
复制以上蓝图代码,直接将其粘贴到你的VCM_LookAt修饰符中,就能在你自己的项目中重现以上图表。
你可以使用 重路由(Reroute) 节点清理图表,以便更容易看清连线的走向。如果一些引脚有多条连线从中进出,这尤其有用。双击一条连线,添加重路由节点。你可以选中它,像关卡中其他节点那样四处拖动,调整连线的方向。
将修饰符添加到VCam组件堆栈
完成修饰符蓝图后,你现在可以将其应用到场景中虚拟摄像机的 修饰符堆栈(Modifier Stack) 。
要将修饰符添加到VCam组件,请执行以下操作:
- 在关卡中,选择你创建的 虚拟摄像机(Virtual Camera) Actor。
- 在 细节(Details) 面板中,选择层级窗口中的 VCam 组件。
-
在 虚拟摄像机(Virtual Camera) 属性下,找到 修饰符堆栈(Modifier Stack) ,并点击 添加(+) 图标将元素添加到堆栈。
-
展开添加的名为 索引(Index [0]) 的 修饰符堆栈(Modifier Stack) 元素下的属性,使用 名称(Name) 文本字段将此修饰符命名为“LookAt”。
-
使用 生成的修饰符(Generated Modifier) 的下拉列表选择本指南前面部分创建的 VCM_LookAt 修饰符蓝图。
- 展开 生成的修饰符(Generated Modifier)> 默认值(Default) 显示其属性。
-
使用 目标Actor(Target Actor) 的下拉选择列表,在关卡中选择一个Actor,让虚拟摄像机追踪它。
如果你需要Actor进行测试,你可以使用 放置Actor(Place Actors) 面板中可用的 形状(Shapes) Actor。这些是简单的形状,例如立方体、圆柱体、球体和椎体。
现在你设置了分配给虚拟摄像机的修饰符蓝图,无论对象在场景中如何移动,虚拟摄像机都能够追踪该对象了。
修改修饰符的行为
分配给你的虚拟摄像机的VCM_LookAt修饰符蓝图将追踪关卡中指定对象的位置。在此小节中,你将扩展脚本蓝图行为,添加打开和关闭虚拟摄像机追踪能力的逻辑。
要将额外行为添加到你的修饰符,请执行以下操作:
- 打开 VCM_LookAt 修饰符蓝图。
- 在事件图表中,点击 Event On Apply 节点并向左拖曳,在 Is Valid 节点前面为额外逻辑腾出空间。
- 在 Event On Apply 节点上,右键点击 摄像机组件(Camera Component) 引脚,并从列表选择 提升到变量(Promote to Variable) 。
- 在 我的蓝图(My Blueprint) 面板的 变量(Variables) 类别下,选择 摄像机组件(Camera Component) 变量。
- 在 细节(Details) 面板中,展开 高级(Advanced) 类别,并勾选 瞬时(Transient) 旁边的复选框。
- 将 Event On Apply 节点连接到 Set Camera Component 节点。
- 在 我的蓝图(My Blueprint) 面板的 变量(Variables) 类别下,点击 添加(+) 图标添加 布尔(Boolean) 变量。将其命名为“ShouldLookAt”。
- 点击 ShouldLookAt 变量并将其拖入事件图表中,然后选择 Get ShouldLookAt 。
- 从 ShouldLookAt 节点拖出引脚,并添加 Branch 节点。
- 将 Set Camera Component 节点连接到 Branch 节点。
- 将 Branch 节点的 True 执行引脚连接到 Is Valid 节点。
- 从 我的蓝图(My Blueprint) 面板的 变量(Variables) 类别下,将 摄像机组件(Camera Component) 变量拖入图表中,并选择 Get Camera Component 。
- 拖出 Camera Component 节点的输出引脚,并添加 Set World Rotation 节点。
- 拖出 Camera Component 节点的输出引脚,并添加 Get World Rotation 节点。
- 拖出 Get World Rotation 节点的 返回值(Return Value) 引脚,并将其连接到 Set World Rotation 节点上的 新旋转(New Rotation) 引脚。
- 拖出 Branch 节点的 False 执行引脚,并将其连接到 Set World Rotation 节点。
- 编译(Compile) 并 保存(Save) 。
添加的逻辑(下图中高亮显示的部分)使用Branch节点打开和关闭使用虚拟摄像机追踪对象的能力。采用 True 路径时,摄像机将追踪关卡中的指定对象。使用 False 路径时,摄像机将停止追踪。此扩展逻辑仅设置执行此行为所需的内容。本指南的下面小节将使用此逻辑追踪 Should Look At 状态,并对屏幕上的按钮使用VCam控件以开启/关闭此行为。
VCM_LookAt修饰符蓝图的图表现在如下图所示:
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_0" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableGet_0"'
VariableReference=(MemberName="TargetActor",MemberGuid=E54FF4EA40AC7F265D6FD491447D55EF,bSelfContext=True)
NodePosX=400
NodePosY=432
NodeGuid=A75708504CB32371D15BBCB48C3AFFE8
CustomProperties Pin (PinId=15ABA2FD4CB6C4C4CFA61FAC683BA11C,PinName="TargetActor",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 5832F75848CA2DF0B26D458D70904493,K2Node_CallFunction_4 906BFDAF421F41DD1D8CB6BC7B232EA7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=09B0483D451A90DD5A246B9305BE0447,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_0" ExportPath=/Script/BlueprintGraph.K2Node_MacroInstance'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_MacroInstance_0"'
MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=64422BCD430703FF5CAEA8B79A32AA65)
NodePosX=544
NodePosY=368
NodeGuid=B8C1784B459960C53A95519C394A7700
CustomProperties Pin (PinId=CD6595AB4AAB442EE35B7CBFC25BB609,PinName="exec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_0 6F06745641660347F37593B74DEECF1F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5832F75848CA2DF0B26D458D70904493,PinName="InputObject",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_0 15ABA2FD4CB6C4C4CFA61FAC683BA11C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=1D60A8504059FD5578E71CAAC8E61746,PinName="Is Valid",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_3 B016745B4EAB9237A873EE8BAB79054F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=AC30D2EF4B8FC3899F9B2A83DBE39D76,PinName="Is Not Valid",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_1" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_CallFunction_1"'
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_GetComponentLocation")
NodePosX=544
NodePosY=576
NodeGuid=0358EBC84E82A12B49C184897327F78F
CustomProperties Pin (PinId=2E3C085B4A759DA0780250BEF86E075D,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nScene Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_2 B3353B87423045BF5EF9D18AC21C0589,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5400217048B5315A2D873187187069E6,PinName="ReturnValue",PinToolTip="Return Value\nVector\n\nReturn location of the component, in world space",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_2 495CDF164A39EFC52420F5BFC1ED515B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_CallFunction_2"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="FindLookAtRotation")
NodePosX=816
NodePosY=544
NodeGuid=DB72C77D4EF19C12D9D0078B9CC409D0
CustomProperties Pin (PinId=BAF60E134AA7E82D49FCC98047CF517E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=495CDF164A39EFC52420F5BFC1ED515B,PinName="Start",PinToolTip="Start\nVector (by ref)",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_1 5400217048B5315A2D873187187069E6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=373D7A0445A28E861BD13891775CF1F5,PinName="Target",PinToolTip="Target\nVector (by ref)",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_4 674B89A04A80B94D3C3EF4864F09D5D1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=CD5D74554D5E600CB97F2BB6657D9391,PinName="ReturnValue",PinToolTip="Return Value\nRotator\n\nFind a rotation for an object at Start location to point at Target location.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_3 4BB2816044141B8784FB4F92E045DC3A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_3" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_CallFunction_3"'
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_SetWorldRotation")
NodePosX=1088
NodePosY=352
AdvancedPinDisplay=Hidden
NodeGuid=95F390984B99E5ECA4B81D900F9D3563
CustomProperties Pin (PinId=B016745B4EAB9237A873EE8BAB79054F,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 1D60A8504059FD5578E71CAAC8E61746,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=22FEC78C4155F3C40A52F0B5CD6E4A65,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=CD4DA2284BCF79CDB3FDAAA14718F5C1,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nScene Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 978D297E4275209BA537C1B79172EAA2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4BB2816044141B8784FB4F92E045DC3A,PinName="NewRotation",PinToolTip="New Rotation\nRotator\n\nNew rotation in world space for the component. ",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_2 CD5D74554D5E600CB97F2BB6657D9391,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4A0E8C5D4298A89A5999C5AC512ECD14,PinName="bSweep",PinToolTip="Sweep\nBoolean\n\nWhether we sweep to the destination (currently not supported for rotation). ",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=0865B03F42445B611EF84380305C5876,PinName="SweepHitResult",PinToolTip="Sweep Hit Result\nHit Result Structure\n\nHit result from any impact if sweep is true. ",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=9F5F01E84FDE5FBE215C1AB4F2CE0428,PinName="bTeleport",PinToolTip="Teleport\nBoolean\n\nWhether we teleport the physics state (if physics collision is enabled for this object). 如果为true,此对象的物理速度不变(因此布偶部分不受位置变化影响)。 如果为false,物理速度将基于位置变化更新(影响布偶部分)。 如果CCD已打开并且未传送,这会影响整个扫描体积上的对象。",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_4" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_CallFunction_4"'
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.Actor"',MemberName="K2_GetActorLocation")
NodePosX=544
NodePosY=480
NodeGuid=4B2E89F749A6053C26B844B1B546BE2C
CustomProperties Pin (PinId=906BFDAF421F41DD1D8CB6BC7B232EA7,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nActor Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_0 15ABA2FD4CB6C4C4CFA61FAC683BA11C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=674B89A04A80B94D3C3EF4864F09D5D1,PinName="ReturnValue",PinToolTip="Return Value\nVector\n\nReturns the location of the RootComponent of this Actor",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_2 373D7A0445A28E861BD13891775CF1F5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_0" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_Knot_0"'
NodePosX=944
NodePosY=288
NodeGuid=0BE53424434D894F747682919F4D4014
CustomProperties Pin (PinId=866CE3DD43A5BC953FDB5593B23888A7,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_1 07B37604454F57CA7F90C785680CEF91,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=978D297E4275209BA537C1B79172EAA2,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_3 CD4DA2284BCF79CDB3FDAAA14718F5C1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_1" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_Knot_1"'
NodePosX=-144
NodePosY=288
NodeGuid=FADE03B64369540438FE77AAE83ADF6A
CustomProperties Pin (PinId=D817DA194A9965A7EF919BA8C1BE7340,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_2 0B845C03499F0BBE67C9E691AC58599D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=07B37604454F57CA7F90C785680CEF91,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 866CE3DD43A5BC953FDB5593B23888A7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableSet Name="K2Node_VariableSet_0" ExportPath=/Script/BlueprintGraph.K2Node_VariableSet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableSet_0"'
VariableReference=(MemberName="Camera Component",MemberGuid=714A37E34FB324FD2C05DEBC1B29507D,bSelfContext=True)
NodePosX=-128
NodePosY=384
NodeGuid=0B50AFDA44E66C048BAAA1B2143A38B1
CustomProperties Pin (PinId=BC49A7BB4E27AAF90080FC9E9A849132,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_2 BE7177D54CBF6ACA286B63BF5755EB35,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=85BC16284B5BC5C7DF5D679766E2D4CE,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_0 7B4591D94B23EF21B85C0496FE7A752E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=33D57DC747AB8CAA438793AEE00546B1,PinName="Camera Component",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_2 0B845C03499F0BBE67C9E691AC58599D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=CCC11AE44E7477377FA473B037873196,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=29B01AE94EAA0E8BD146CAB77401113A,PinName="Output_Get",PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_1" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableGet_1"'
VariableReference=(MemberName="ShouldLookAt",MemberGuid=93C2D2AA4B957A78A74C3E88BB23AD04,bSelfContext=True)
NodePosX=-48
NodePosY=528
NodeGuid=C908343A44AA1AAFE00E95BC4559189A
CustomProperties Pin (PinId=B3EC71C14EEC610F7AFB6283D70D5523,PinName="ShouldLookAt",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",LinkedTo=(K2Node_IfThenElse_0 44841FEA41CBA64B59A936A4DE4117B3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=425398A64D13B284A49A86856C4CC38E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_IfThenElse Name="K2Node_IfThenElse_0" ExportPath=/Script/BlueprintGraph.K2Node_IfThenElse'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_IfThenElse_0"'
NodePosX=144
NodePosY=368
NodeGuid=61D528754E264C99EB8AEFB90F20BC81
CustomProperties Pin (PinId=7B4591D94B23EF21B85C0496FE7A752E,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableSet_0 85BC16284B5BC5C7DF5D679766E2D4CE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=44841FEA41CBA64B59A936A4DE4117B3,PinName="Condition",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",LinkedTo=(K2Node_VariableGet_1 B3EC71C14EEC610F7AFB6283D70D5523,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6F06745641660347F37593B74DEECF1F,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "true", "true"),Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 CD6595AB4AAB442EE35B7CBFC25BB609,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=10E21F5C46751E7D599D5D8A5B00C7AD,PinName="else",PinFriendlyName=NSLOCTEXT("K2Node", "false", "false"),Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_5 C63C94B946FD2603CC6D7AAF02A6A2B5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_2" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableGet_2"'
VariableReference=(MemberName="Camera Component",MemberGuid=714A37E34FB324FD2C05DEBC1B29507D,bSelfContext=True)
NodePosX=112
NodePosY=752
NodeGuid=AC4753AF4C17C44529D927AB98D438D6
CustomProperties Pin (PinId=CEDA0B21483111068A408DB7F3ED2799,PinName="Camera Component",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_5 37D91B1B4CA33F53FD1CE6ABF19E9CB7,K2Node_CallFunction_6 E673A28B4FF0A12DC1DE32B5FBEB93DE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=9F09568C4E40092785857DA0DAC5DD61,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_5" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_CallFunction_5"'
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_SetWorldRotation")
NodePosX=544
NodePosY=704
AdvancedPinDisplay=Hidden
NodeGuid=01F9CD8548AE3030F3138D8363DE7A0B
CustomProperties Pin (PinId=C63C94B946FD2603CC6D7AAF02A6A2B5,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_0 10E21F5C46751E7D599D5D8A5B00C7AD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=A642D4AC4013A546A48AE3A1D8B94D3D,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=37D91B1B4CA33F53FD1CE6ABF19E9CB7,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_2 CEDA0B21483111068A408DB7F3ED2799,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=D41E000F4F57269B3B4F21A340A5F301,PinName="NewRotation",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_6 2C5F75DA441B31A0F961CABAE26DB682,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=7444268A4591D152B547D580B94BF549,PinName="bSweep",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=688ADCFF46C42C423A846986D4E9DB4D,PinName="SweepHitResult",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=D9DCE7A943EDF7DCB02135BD56FFADCA,PinName="bTeleport",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_6" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_CallFunction_6"'
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_GetComponentRotation")
NodePosX=304
NodePosY=800
NodeGuid=BC722671428BFFBAA7B87C942E9CD6BE
CustomProperties Pin (PinId=E673A28B4FF0A12DC1DE32B5FBEB93DE,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_2 CEDA0B21483111068A408DB7F3ED2799,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=2C5F75DA441B31A0F961CABAE26DB682,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",LinkedTo=(K2Node_CallFunction_5 D41E000F4F57269B3B4F21A340A5F301,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_2" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_Knot_2"'
NodePosX=-160
NodePosY=624
NodeGuid=0F54C22B400BB621B6758698D4F44DE8
CustomProperties Pin (PinId=BCE50B344F1958EF7DB50EA8116CCD27,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_2 0B845C03499F0BBE67C9E691AC58599D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B3353B87423045BF5EF9D18AC21C0589,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CinematicCamera.CineCameraComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_1 2E3C085B4A759DA0780250BEF86E075D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
复制以上蓝图代码,直接将其粘贴到你的VCM_LookAt修饰符中,就能在你自己的项目中重现以上图表。
使用增强输入
虚拟摄像机的修饰符可以使用增强输入操作为VCam操作员提供额外控制手段。在指南的此小节中,你将使用这些增强输入操作来控制VCM_LookAt修饰符蓝图中设置的按键逻辑,打开和关闭你的虚拟摄像机的对象追踪。这意味着,舞台操作员可以通过在键盘上按键来使用该功能。
创建输入操作
使用增强输入操作需要两个资产: 输入操作(Input Action) 和 输入映射上下文(Input Mapping Context) 。这些资产用于将所按的键与VCM_LookAt修饰符蓝图中设置的逻辑关联起来。
要创建输入操作和输入映射上下文,请执行以下操作:
-
在内容浏览器中,点击 添加(Add (+))> 输入(Input) 并添加两项:
- 输入操作(Input Action) ,并将其命名为 IA_ToggleActivation 。
- 输入映射上下文(Input Mapping Context) ,并将其并命名为 IMC_LookAt 。
-
打开 IMC_LookAt 输入映射上下文资产。
-
在 细节(Details) 面板中,点击 映射(Mappings) 旁边的 添加(+) 图标,将新的 输入操作(Input Action) 元素添加到数组。展开其属性并选择此小节的第一步中创建的 IA_ToggleActivation 输入操作。
-
在 IA_ToggleActivation 元素下,使用 键盘(Keyboard) 图标旁边的下拉菜单,将按键 S 分配为此输入操作的默认键。
- 展开按键分配下的属性,并勾选 玩家可映射(Is Player Mappable) 旁边的复选框。
-
展开 玩家可映射选项(Player Mappable Options) 下的属性,并在 名称(Name) 文本字段中将其命名为“IA_ToggleActivation”。
如需详细了解如何配置输入映射上下文资产,请参阅增强输入文档。
将输入操作分配给修饰符蓝图
在指南的此部分中,你将使用在之前小节中随VCM_LookAt修饰符蓝图创建的输入映射上下文。你要将其分配给VCM_LookAt并设置一些额外逻辑来处理对象追踪处于哪个状态。
要将输入操作分配给修饰符蓝图,请执行以下操作:
- 打开之前在此页面的创建修饰符蓝图小节中创建的 VCM_LookAt 修饰符蓝图。
-
在蓝图工具栏上选择 类默认值(Class Defaults) 。
-
在 细节(Details) 面板的 VCam输入(VCam Input) 类别下,将你的 IMC_LookAt 资产分配给 输入映射上下文(Input Mapping Context) 分配插槽。
- 在 事件图表(Event Graph) 中右键点击,搜索并添加 增强操作输入(Enhanced Action Input) 下的 IA_ToggleActivation 节点。此事件以你创建的IA_ToggleActivation输入操作命名。
- 在 我的蓝图(My Blueprint) 面板的 变量(Variables) 类别下,将 ShouldLookAt 变量拖入图表中,并从列表选择 Get ShouldLookAt 。
- 拖出 ShouldLookAt 布尔值引脚,并添加 Branch 节点。
- 拖出 Enhanced Action Events IA_ToggleActivation 事件节点的 触发(Triggered) 引脚并将其连接到 Branch 节点。
- 从 我的蓝图(My Blueprint) 面板的 变量(Variables) 类别下,将 ShouldLookAt 变量拖入图表中,并选择 Set ShouldLookAt 。
- 在 Set ShouldLookAt 节点上,取消勾选 ShouldLookAt 布尔值旁边的复选框。执行此操作两次,创建两个Set ShouldLookAt节点。
- 拖出 Branch 节点的 True 引脚,并将其连接到某个 Set ShouldLookAt 节点的输入。
- 拖出 Branch 节点的 False 引脚,并将其连接到另一个 Set ShouldLookAt 节点的输入。
-
在连接到 Branch 节点的 True 路径的 Set ShouldLook 节点上,勾选输入引脚 应该查看(Should Look At) 的复选框。
- 编译(Compile) 并 保存(Save) 。
完成这些步骤后,你就将IMC_LookAt输入映射上下文资产分配给了VCM_LookAt。你已添加额外逻辑,用于确定IA_ToggleActivation输入操作的状态是True还是False。
你的图表现在应该如下图所示:
新的事件和逻辑应该如下所示:
Begin Object Class=/Script/InputBlueprintNodes.K2Node_EnhancedInputAction Name="K2Node_EnhancedInputAction_0" ExportPath=/Script/InputBlueprintNodes.K2Node_EnhancedInputAction'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_EnhancedInputAction_0"'
InputAction=/Script/EnhancedInput.InputAction'"/Game/VCamComponentSetup/IA_ToggleActivation.IA_ToggleActivation"'
NodePosX=-400
NodePosY=992
AdvancedPinDisplay=Hidden
NodeGuid=3A67269B4A3FE05C417F7BB9E50114ED
CustomProperties Pin (PinId=5F5BF46C42CE8A3A1E29D393BD7310D4,PinName="Triggered",PinToolTip="Triggering occurred after one or more processing ticks",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_2 CE1D444D42E19EF59733E3B380975B0A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=FAF365714FECF4180224099B2D1E96BC,PinName="Started",PinToolTip="事件已发生,开始进行触发求值。注意:触发的事件也可能发生此帧。",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=D81142744792EAFDC3C66BBAEEFAA227,PinName="Ongoing",PinToolTip="Triggering is still being processed",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=027FB6BC4988818FE13A04BC4D5FA000,PinName="Canceled",PinToolTip="Triggering has been canceled",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=23FD0CAB49FCFA0132007CA8C1F55796,PinName="Completed",PinToolTip="触发器状态已从"已触发"变成了"非此帧",也就是说触发已完成。\nNOTE: 使用此事件限制你只能使用一组已开始/已完成事件的触发器。你可能更喜欢两个操作,每个操作都有自己的触发规则。\n待办事项:如果在同一帧上有触发器报告正在进行,则不会触发已完成事件,而是两者都应该触发。例如,更新2个按住(=正在进行)+按下(=无)组合会引发正在进行的事件。",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=1520E3434EB28C7E01A730889E0A74BD,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C5D7C4194A119B453A9290B12664A8A9,PinName="ElapsedSeconds",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=BE8DD63A480DAFB812F088A1737CFCD6,PinName="TriggeredSeconds",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=238B8CD84D6E766F912ABFA34B607963,PinName="InputAction",PinToolTip="Input Action\nInput Action Object Reference\n\nThe input action that caused this event to fire",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputAction"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="IA_ToggleActivation",DefaultObject="/Game/VCamComponentSetup/IA_ToggleActivation.IA_ToggleActivation",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_6" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableGet_6"'
VariableReference=(MemberName="ShouldLookAt",MemberGuid=93C2D2AA4B957A78A74C3E88BB23AD04,bSelfContext=True)
NodePosX=-32
NodePosY=1088
NodeGuid=F48122854388DA73AB8194BFBA4A6161
CustomProperties Pin (PinId=FD3352CF484E87BC61F632B1636A26FB,PinName="ShouldLookAt",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",LinkedTo=(K2Node_IfThenElse_2 6C1FF80F4BB139F4CE7F19AC768F4E6E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=95AED2D147C1EB6B465673BE12BED4C5,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_IfThenElse Name="K2Node_IfThenElse_2" ExportPath=/Script/BlueprintGraph.K2Node_IfThenElse'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_IfThenElse_2"'
NodePosX=176
NodePosY=992
NodeGuid=DA25384E420F1DAD2F3190A11A492D6B
CustomProperties Pin (PinId=CE1D444D42E19EF59733E3B380975B0A,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_EnhancedInputAction_0 5F5BF46C42CE8A3A1E29D393BD7310D4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6C1FF80F4BB139F4CE7F19AC768F4E6E,PinName="Condition",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",LinkedTo=(K2Node_VariableGet_6 FD3352CF484E87BC61F632B1636A26FB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=283698744449019BBB1BA9BCEE134650,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "true", "true"),Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableSet_4 A9BE459942046FE6E2C0DAADB509EF86,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=61F861C64AC524625EF10BAFA8E7B41D,PinName="else",PinFriendlyName=NSLOCTEXT("K2Node", "false", "false"),Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableSet_3 A9BE459942046FE6E2C0DAADB509EF86,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableSet Name="K2Node_VariableSet_4" ExportPath=/Script/BlueprintGraph.K2Node_VariableSet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableSet_4"'
VariableReference=(MemberName="ShouldLookAt",MemberGuid=93C2D2AA4B957A78A74C3E88BB23AD04,bSelfContext=True)
NodePosX=480
NodePosY=1008
NodeGuid=56F54F7B4B4BEBCE2AA9A6BABD40D437
CustomProperties Pin (PinId=A9BE459942046FE6E2C0DAADB509EF86,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_2 283698744449019BBB1BA9BCEE134650,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C7DEC73343C28BB71230C384CC4E5B46,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5A464E9D4640E23BEBA168BBAF589040,PinName="ShouldLookAt",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=D07515604D8BC4037F9E28BD79B98243,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4101688340A6705E0B0C2D89CFC8B2C3,PinName="Output_Get",PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableSet Name="K2Node_VariableSet_3" ExportPath=/Script/BlueprintGraph.K2Node_VariableSet'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt:EventGraph.K2Node_VariableSet_3"'
VariableReference=(MemberName="ShouldLookAt",MemberGuid=93C2D2AA4B957A78A74C3E88BB23AD04,bSelfContext=True)
NodePosX=480
NodePosY=1120
NodeGuid=CF80F05A43AC9E639B73BEB3CAFA668F
CustomProperties Pin (PinId=A9BE459942046FE6E2C0DAADB509EF86,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_2 61F861C64AC524625EF10BAFA8E7B41D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C7DEC73343C28BB71230C384CC4E5B46,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5A464E9D4640E23BEBA168BBAF589040,PinName="ShouldLookAt",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4101688340A6705E0B0C2D89CFC8B2C3,PinName="Output_Get",PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=D07515604D8BC4037F9E28BD79B98243,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/VCM_LookAt.VCM_LookAt_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
复制以上蓝图代码,直接将其粘贴到你的VCM_LookAt修饰符中,即可在你自己的项目中重现以上图表。
请注意,若使用此特定设置,每次按“S”键时,即使焦点不在视口上,输入系统也会执行。当有人出于其他目的按下该键时,这可能会导致冲突。例如,如果有人在内容浏览器中使用字母"s"重命名资产,事件也被会执行。
将输出提供程序添加到虚拟摄像机
输出提供程序系统会将VCam组件的输出重路由到各种提供程序,例如视口和使用远程会话协议的设备。你可以让每个虚拟摄像机使用多个输出提供程序,每个摄像机都将按堆栈中列出的顺序执行它们。
在指南的此部分中,你将执行初始设置,并选择你想使用的输出提供程序类型。
输出提供程序的初始设置
要将输出提供程序添加到虚拟摄像机,请执行以下操作:
- 在关卡中,选择你的 虚拟摄像机(Virtual Camera) Actor。
-
在 细节(Details) 窗格中,找到 组件(Components) 层级,并选择 VCam 组件。
-
找到 输出提供程序(Output Providers) 数组,点击 添加(+) 图标添加新元素,并从 输出提供程序(Output Providers) 列表选择提供程序。每种类型的输出提供程序在被添加到数组时,会在其对应元素下填充其设置。你可以从以下选项中选择:
-
勾选 输出(Output) 属性 处于激活状态(Is Active) 旁边的复选框。
各种输出提供程序的设置方法并不完全一样。如需了解它们的信息,以及将它们用于虚拟摄像机所需的额外设置,请参阅下面的小节。
本指南使用像素流送输出提供程序作为示例,包括必需的iOS设备和Live Link VCam应用的使用。
设置视口输出提供程序
视口输出提供程序(Viewport Output Provider) 属性列表如下所示:
要阅读了解视口输出提供程序属性,请参阅此页面的视口输出提供程序小节。
此提供程序接受虚拟摄像机的当前视图,并将其直接输出到关卡编辑器的主视口。它还可以将UMG控件显示在屏幕上,如以下示例所示。使用 UMG覆层(UMG Overlay) 属性将控件添加到输出提供程序。你可以使用示例资产 TestUMG ,查看显示在屏幕上的初步示例。
设置像素流送输出提供程序
此输出提供程序需要受支持的iOS设备来运行Live Link VCAM应用。
像素流送输出提供程序(Pixel Streaming Output Provider) 属性列表如下所示:
要阅读了解其属性,请参阅此页面的像素流送输出提供程序小节。
设置完像素流送输出提供程序后,你可以在共享网络上使用iOS设备上的Live Link VCAM应用连接到关卡编辑器视口并控制虚拟摄像机。关于设置并从iOS设备连接到编辑器的完整操作说明,请参阅使用Live Link控制虚拟摄像机Actor。
设置虚幻远程输出提供程序
此输出提供程序需要受支持的iOS设备来运行Live Link VCAM应用。
虚幻远程输出提供程序(Unreal Remote Output Provider) 属性列表如下所示:
要阅读了解其属性,请参阅此页面的虚幻远程输出提供程序小节。
此输出提供程序需要在虚幻引擎的项目设置中和Live Link VCAM应用上进行额外设置,才能建立连接。
虚幻引擎设置:
- 在虚幻引擎中,打开 项目设置(Project Settings) 。
-
在 插件(Plugins) 类别下,找到 UDP消息(UDP Message) 分段并将 单播端点(Unicast Endpoint) 设置为你的计算机的IP地址,用末尾的“:0”指示你的端口号。例如,格式为10.0.0.0:0。
-
在项目设置的 引擎(Engine)> 渲染(Rendering) 类别下,找到 默认设置(Default Settings) ,并使用下拉选择将 帧缓冲区像素格式(Frame Buffer Pixel Format) 属性设置为 8位RGBA(8bit RGBA) 。
- 重启编辑器,使这些更改生效。
使用Live Link VCAM应用的iOS设备设置:
- 在你的iOS设备上打开 Live Link VCAM 应用。
- 点击屏幕右下角的 齿轮 图标,打开 设置(Settings) 。
-
更改 连接类型为远程会话 。
- 输入你想在同一个共享网络上连接到的计算机的 IP地址(IP Address) 。
- 按下 连接(Connect) 。
此时Live Link VCAM应用应该会连接到你的虚幻编辑器会话,并在你的iOS设备的屏幕上镜像显示编辑器视口。
设置媒体输出提供程序
此输出提供程序需要输出到虚幻媒体框架支持的设备。
媒体输出提供程序(Media Output Provider) 属性列表如下所示:
要阅读了解其属性,请参阅此页面的媒体输出提供程序小节。
要设置媒体输出提供程序,请使用 输出配置(Output Config) 分配插槽。
如需详细了解如何使用虚幻媒体框架,请参阅媒体框架。
设置Composure输出提供程序
需要启用Composure插件。
Composure输出提供程序(Composure Output Provider) 属性列表如下所示:
要阅读了解其属性,请参阅此页面的Composure输出提供程序小节。
你可以使用 层目标(Layer Targets) 数组添加渲染目标,用于渲染虚拟摄像机的视图。如需详细了解如何使用Composure插件和层目标,请参阅Composure插件。
使用连接点传递输入操作
修饰符连接点是试验性的功能。
在本指南的使用增强输入小节中,你创建了可以通过修饰符传递到其他蓝图的输入操作(IA_ToggleActivation),例如VCam控件蓝图。你可以使用 连接点(Connection Points) 传递此输入。
在指南的此部分中,你将执行以下操作:
- 在修饰符蓝图中添加连接点。
- 创建带有按钮和逻辑的VCam控件。
- 创建HUD以管理连接点。
将连接点添加到修饰符
要将连接点添加到修饰符蓝图,请执行以下操作:
- 打开 VCM_LookAt 修饰符蓝图。
-
点击蓝图工具栏上的 类默认值(Class Defaults) 。
-
在 细节(Details) 面板的 VCam连接点(VCam Connection Points) 类别下,展开 连接点(Connection Points) 并点击 添加(+) 图标添加新元素。将该元素命名为“ToggleActivation”。
-
展开 ToggleActivation 元素的属性,并将 IA_ToggleActivation 输入操作资产分配给 关联的操作(Associated Action) 分配插槽。
- 编译(Compile) 并 保存(Save) 。
创建VCam控件和初始设置
在此小节中,你将创建按钮,用于使用 VCam控件(VCam Widget) 资产打开和关闭虚拟摄像机的对象追踪。不同于UMG控件,VCam控件接受输入和定义与修饰符连接点的连接的能力有所不同。
如需创建VCam控件,请执行以下操作:
-
在内容浏览器中,点击 添加(Add (+))> VCam 并添加 VCam控件(VCam Widget) 资产。将控件命名为 VCW_ConnectionButton 。
弹出窗口会提示你输入 输入映射上下文(Input Mapping Context) 。你可以点击 跳过(Skip) ,继续打开蓝图。
- 打开 VCW_ConnectionButton 蓝图。
-
选择 库(Library) 面板,在 公共(Common) 类别下,将 按钮(Button) 拖入设计师图表。
-
在 层级(Hierarchy) 面板中,将按钮重命名为"Button"。
-
在VCam控件蓝图的右上角,点击 图表(Graph) 打开蓝图脚本的编辑模式。
- 在蓝图工具栏中选择 类默认值(Class Defaults) 。
-
在 细节(Details) 面板中,找到 VCam连接(VCam Connection) 类别,展开 连接(Connection) 并点击 添加(+) 图标添加新元素。将该元素命名为"Button"。
-
展开 按钮(Button) 连接元素的属性,并设置以下属性:
- 应该勾选 需要输入操作(Requires Input Action) 。
- 操作类型(Action Type) 应该设置为 数字(布尔)(Digital (bool)) 。
- 编译(Compile) 并 保存(Save) 。
现在你有了一个名为 VCW_ConnectionButton 并带有按钮控件的VCam控件。
创建VCam控件蓝图逻辑
在之前小节中设置好VCam控件按钮之后,你可以将一些脚本逻辑添加到VCam控件蓝图,控制按钮控件与修饰符蓝图(VCM_LookAt)的交互方式。
要添加VCam控件的蓝图逻辑,请执行以下操作:
- 在 图表(Graph) 模式下,转至 我的蓝图(My Blueprint)> 变量(Variables) 并选择 按钮(Button) 变量。
-
在 细节(Details) 面板中,展开 事件(Events) 类别,并点击 点击时(On Clicked) 旁边的 添加(Add (+)) 按钮,将一个事件添加到图表。
- 右键点击事件图表并从 VCam连接(VCam Connections) 类别添加 获取连接(Get Connections) 变量。
- 从 获取连接(Get Connections) 变量拖出引脚,并添加 Find 节点。将 键名称(Key Name) 文本字段输入设置为"Button",匹配你之前创建的连接的名称。
- 拖出 Find 节点的 蓝色 引脚的输出引脚,并添加 Get Connected Modifier 节点。
- 拖出 Get Connected Modifier 节点的 返回值(Return Value) 引脚,并添加 Get Owning VCam Component 节点。
- 拖出 Get Owning VCam Component 节点的 返回值(Return Value) 引脚,并添加 Inject Input for Action 节点。
- 在 Inject Input for Action 节点上,执行以下操作:
- 右键点击 原始值(Raw Value) 输入并选择 拆分结构体引脚(Split Struct Pin) ,显示X、Y和Z值的单独输入。
- 将 原始值X(Raw Value X) 设置为 1 。这可以确保在按下按钮时,你的输入操作会收到匹配 True 的值,以模拟硬件按钮的按下状态。
- 将 原始值类型(Raw Value Type) 的下拉选择设置为 数字(布尔)(Digital (bool)) 。
- 拖出 Find 节点的 蓝色 引脚,并添加 Get Connected Input Action 节点。
- 拖出 Get Connected Input Action 节点的 返回值(Return Value) 引脚,并将其连接到 Inject Input for Action 节点的 操作(Action) 输入。
- 编译(Compile) 并 保存(Save) 。
完成后,你的VCW_ConnectionButton VCam控件蓝图图表应该如下图所示:
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_0" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_VariableGet_0"'
VariableReference=(MemberName="Connections",bSelfContext=True)
NodePosX=240
NodePosY=816
NodeGuid=6816BABF4D1832E57B8C8D94E853EF3A
CustomProperties Pin (PinId=6665757543AA8F032D717AB506E3697B,PinName="Connections",PinFriendlyName=NSLOCTEXT("", "BBE4BDE0420406B4812E148D74E6791F", "Connections"),Direction="EGPD_Output",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(TerminalCategory="struct",TerminalSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"'),PinType.ContainerType=Map,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_0 CD841974480A3234F06102A9F2C37A90,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=9A32C7E64734B8CB07E22282E1159E1F,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamWidget"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_0"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.BlueprintMapLibrary"',MemberName="Map_Find")
NodePosX=400
NodePosY=816
NodeGuid=54A785EF409B4E149CFA40BF1021730A
CustomProperties Pin (PinId=9403039A440948E928EBBA8B85FF0B99,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.BlueprintMapLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__BlueprintMapLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=CD841974480A3234F06102A9F2C37A90,PinName="TargetMap",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(TerminalCategory="struct",TerminalSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"'),PinType.ContainerType=Map,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_0 6665757543AA8F032D717AB506E3697B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B6C368CF43063A43DC01969090B92969,PinName="Key",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0674EB8C414CBF6BE64EE583C4C91411,PinName="Value",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_1 5A7B7C3C4D1F9BC0814DB68621177BA6,K2Node_CallFunction_5 6049632247ABC8B992E2F6837E6F2F8A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=81C4532346335506EDA911A43A28964A,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_1" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_1"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',MemberName="GetConnectedModifier_VCamConnection")
NodePosX=640
NodePosY=800
NodeGuid=03F2B4F14577B8303BFF4393E42E9C36
CustomProperties Pin (PinId=10DCF4AB428E0C5BA9192494CF4CD8E7,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/VCamCore.Default__VCamUIFunctionLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5A7B7C3C4D1F9BC0814DB68621177BA6,PinName="Connection",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_0 0674EB8C414CBF6BE64EE583C4C91411,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=DC1439554476C557EFE053B26D47C64B,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 5E3A5B9A49C511F4949A0DB9DE259437,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_2"'
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',MemberName="GetOwningVCamComponent")
NodePosX=896
NodePosY=784
NodeGuid=07EB4E2641F873455C86BCBCC382FEF6
CustomProperties Pin (PinId=5E3A5B9A49C511F4949A0DB9DE259437,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_1 DC1439554476C557EFE053B26D47C64B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=1410A3284215DD1C8F70F88B6D08F9AC,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_3 065D015641B7111904E6ABA9B184F0FF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_3" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_3"'
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/VCamCore.VCamComponent"',MemberName="InjectInputForAction")
NodePosX=1200
NodePosY=672
NodeGuid=3CA7E3A74FB6D55CF0311CA706766448
CustomProperties Pin (PinId=473E74084CF3B071289864A65E0B5BBB,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_ComponentBoundEvent_0 F3BA0F304E25E2CC6FEE729980368545,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E4D8BE204AAB097F6CEC23BD197C29F8,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=065D015641B7111904E6ABA9B184F0FF,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 1410A3284215DD1C8F70F88B6D08F9AC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=491995FF4AE19F4FCD8F86BD231EAFC2,PinName="Action",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputAction"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 52F14A1F4CD28370A2657F8FD9F64B50,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=1D23409C4F48419CD15330801BB57889,PinName="RawValue",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,SubPins=(K2Node_CallFunction_3 AB503D1F4FAF4EFA06D03CA59BDB2E63,K2Node_CallFunction_3 4CFD161A41A847A24D7AC4ABB5BA0977,K2Node_CallFunction_3 20B2D82246BC6C7925327CA5F033EC45,K2Node_CallFunction_3 9466186E4DF73D9C0F365A8999E08A1C,),PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=AB503D1F4FAF4EFA06D03CA59BDB2E63,PinName="RawValue_X",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "B9DDF45245FC46234AEDC88BF9E78A1B", "Raw Value"), "ProtoPinDisplayName", NSLOCTEXT("", "8DBDB37D4358154F839239B6B8D4E0C9", "X")),PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.000000",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_3 1D23409C4F48419CD15330801BB57889,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4CFD161A41A847A24D7AC4ABB5BA0977,PinName="RawValue_Y",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "1747BE2243B925085EA14482781B2689", "Raw Value"), "ProtoPinDisplayName", NSLOCTEXT("", "258A4EBF4041BA9A762304BA77159A10", "Y")),PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_3 1D23409C4F48419CD15330801BB57889,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=20B2D82246BC6C7925327CA5F033EC45,PinName="RawValue_Z",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "CEC12D0E45B31E123711DDB0D83C7C2A", "Raw Value"), "ProtoPinDisplayName", NSLOCTEXT("", "F08123A042E3AEFBA216C48368958781", "Z")),PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_3 1D23409C4F48419CD15330801BB57889,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=9466186E4DF73D9C0F365A8999E08A1C,PinName="RawValue_ValueType",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "F601CFA243F306F602D76FA23AE3B5EE", "Raw Value"), "ProtoPinDisplayName", NSLOCTEXT("", "AEEA947D4CCC24C94F83178342694648", "Value Type")),PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/EnhancedInput.EInputActionValueType"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Boolean",ParentPin=K2Node_CallFunction_3 1D23409C4F48419CD15330801BB57889,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=A8CA3BB3404C67CFE67ACCB386DE71C6,PinName="Modifiers",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5202738E4817A5A0BD7379BD2CEEEFE9,PinName="Triggers",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputTrigger"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_5" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_5"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',MemberName="GetConnectedInputAction_VCamConnection")
NodePosX=656
NodePosY=896
NodeGuid=F9519C8F4BBB59594A89D79C0DDB1E9B
CustomProperties Pin (PinId=C7DA6746416F61B9F214C0953D9BDE1E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/VCamCore.Default__VCamUIFunctionLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6049632247ABC8B992E2F6837E6F2F8A,PinName="Connection",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_0 0674EB8C414CBF6BE64EE583C4C91411,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0BB4A7074889FB8B9A8D0B9B0A3B6F50,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputAction"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 E2F1939F479DF2FAAE21A485897ED4B1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_0" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Knot_0"'
NodePosX=1104
NodePosY=928
NodeGuid=A067B247408BB9A8704CC188B2A11C26
CustomProperties Pin (PinId=E2F1939F479DF2FAAE21A485897ED4B1,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputAction"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_5 0BB4A7074889FB8B9A8D0B9B0A3B6F50,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=52F14A1F4CD28370A2657F8FD9F64B50,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/EnhancedInput.InputAction"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_3 491995FF4AE19F4FCD8F86BD231EAFC2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
复制以上蓝图代码,直接将其粘贴到你的VCM_LookAt修饰符中,即可在你自己的项目中重现以上图表。
创建HUD以管理连接
在此小节中,你将创建新的VCam控件,它使用你在之前小节中创建的按钮VCam控件。你在本指南前面部分创建了修饰符蓝图,并在其中设置了虚拟摄像机对象追踪行为,而此控件将显示一个可点击的按钮,用于设置该行为的开关状态。
如需创建HUD,请执行以下操作:
-
在内容浏览器中,点击 添加(Add (+))> VCam 并添加 VCam控件(VCam Widget) 资产。将控件命名为 VCW_ConnectionHUD 。
弹出窗口会提示你输入 输入映射上下文(Input Mapping Context) 。你可以点击 跳过(Skip) ,继续打开蓝图。
- 打开 VCW_ConnectionHUD 。
-
在 库(Library) 面板中的 搜索框(Search Box) 中输入“VCW_ConnectionButton”。你应该会看到你在创建VCam控件小节中创建的同名VCam控件。
- 将 VCW_ConnectionButton 从 库(Library) 面板拖入 层级(Hierarchy) 面板中。
-
右键点击 层级(Hierarchy) 面板中的 VCW_ConnectionButton 控件,转至 封装方式(Wrap With) 并从分组列表添加 画布面板(Canvas Panel) 。
"使用画布面板封装"用于防止HUD变成占据整个屏幕的按钮。
-
在 细节(Details) 面板的 VCam连接(VCam Connections) 类别中,展开 连接点(Connection Points)> 按钮(Button) 。
-
勾选 手动配置连接(Manually Configure Connection) 旁边的复选框,出现名为 连接目标设置(Connection Target Settings) 的可展开的新类别。
-
展开 连接目标设置(Connection Target Settings) 并设置以下内容:
- 将 目标修饰符名称(Target Modifier Name) 设置为“LookAt”。
- 将 目标连接点(Target Connection Point) 设置为“ToggleActivation”。
- 保存(Save) 并 编译(Compile) 。
现在你有一个VCam控件蓝图,可供HUD使用其逻辑显示你的按钮VCam控件,并设置其状态。
默认情况下,当你添加按钮并将使用画布面板封装它时,它会被放置在屏幕左上角。你可以选择在VCam控件的 设计器(Designer) 中移动此按钮,方法是点击它并拖动到画布的其他位置,以在屏幕的不同位置显示它。此外,如果你希望此按钮的功能更清晰,可以在层级面板中向其添加文本。
在VCam组件上设置HUD蓝图
设置好HUD VCam控件蓝图后,下一步是将其应用到VCam组件,以便作为输出提供程序的一个元素出现在屏幕上。
要将HUD VCam控件应用到VCam组件,请执行以下操作:
- 在关卡中选择你的 虚拟摄像机Actor(Virtual Camera Actor) 。
- 在 细节(Details) 面板中,选择组件层级中的 VCam组件(VCam Component) 。
-
在 细节(Details) 面板的 输出提供程序(Output Provider) 分段下,使用你在输出提供程序的初始设置小节中创建的输出提供程序元素,或立即添加一个。
此演示使用的是 像素流送(Pixel Streaming) 输出提供程序。
-
展开 输出提供程序(Output Provider) 元素并设置以下内容:
- 使用 UMG覆层(UMG Overlay) 的下拉选择来分配你的 VCW_ConnectionHUD VCam控件。
- 勾选 处于激活状态(Is Active) 旁边的复选框。
如果此项已经勾选,请取消勾选并再次选择,以手动刷新输出提供程序。
将HUD分配给VCam Actor后,你可以点击视口中的按钮,打开和关闭对象追踪。在此示例中,球体使用 InterpToMovement 设置,并在使用模拟或在编辑器中运行模式时来回移动。这样可以通过关闭和开启更轻松地测试虚拟摄像机的对象追踪。
通过连接和蓝图接口进行的虚拟摄像机自定义
此小节为选读内容。
指南的此小节演示了如何使用连接和蓝图接口进一步自定义虚拟摄像机HUD,根据修饰符的状态更改按钮颜色。这很适合要将同一个按钮VCam控件复用于不同用途的功能,例如在本指南前面部分创建的VCW_ConnectionButton。
创建蓝图接口资产
在此小节中,你将创建用于连接到你的修饰符蓝图的蓝图接口。
要创建蓝图接口,请执行以下操作:
- 在内容浏览器中,点击 添加(Add (+))> 蓝图(Blueprint) 并添加 蓝图接口(Blueprint Interface) 资产。将接口命名为 BPI_ConnectionButton 。
- 打开 BPI_ConnectionButton 。
-
在 我的蓝图(My Blueprint) 面板的 函数(Functions) 类别下,将 NewFunction 重命名为“GetButtonColor”。
-
在 细节(Details) 面板中,找到 输入(Inputs) 类别,并点击 添加(+) 图标添加新参数。将其类型设置为 名称(Name) 并命名为"ConnectionPoint"。
-
在 输出(Outputs) 类别中,点击 添加(+) 图标添加 两个 参数:
- 将第一个参数命名为"Color",并将其 类型(Type) 设置为 线性颜色(Linear Color) 。
- 将第二个参数命名为"Success",并将其 类型(Type) 设置为 布尔(Boolean) 。
- 编译(Compile) 并 保存(Save) 蓝图。
将修饰符蓝图连接到接口蓝图
在此小节中,你将设置VCM_LookAt修饰符蓝图以连接到在之前小节中创建的BPI_ConnectionButton蓝图接口。
要设置与蓝图接口的连接,请执行以下操作:
- 在内容浏览器中,打开在此页面的创建修饰符蓝图小节中创建的 VCM_LookAt 修饰符蓝图。
- 选择蓝图工具栏中的 类设置(Class Settings) 。
-
在 细节(Details) 面板中,找到 接口(Interfaces) 类别,并使用 实现的接口(Implemented Interfaces) 的下拉选择来选择 BPI_ConnectionButton 蓝图接口。
- 编译(Compile) 并 保存(Save) 。
设置接口蓝图逻辑
使用VCam修饰符实现蓝图接口连接后,你可以向VCM_LookAt修饰符蓝图添加一些逻辑,定义按钮在打开和关闭时发出的颜色。
如需连接按钮,请执行以下操作:
-
在 VCM_LookAt 蓝图中,转至 我的蓝图(My Blueprint) 面板。在 接口(Interfaces) 类别下,双击 获取按钮颜色(Get Button Color) 打开其自身的图表选项卡。
- 在 获取按钮颜色(Get Button Color) 图表中,拖出 连接点(Connection Point) 引脚,并添加 Switch on Connection Points 节点。
- 断开 Get Button Color 节点和 返回节点(Return Node) 之间的连线,方法是按住 ALT 并 鼠标左键点击 连线。
- 从 Get Button Color 节点拖出引脚并将其连接到 Switch on Connection Points 节点。
- 拖出 Switch on Connection Points 的 默认(Default) 引脚,并将其连接到 返回节点(Return Node) 。将返回节点下移,以免阻碍下一步。
- 拖出 Switch on Connection Points 节点的 切换激活(Toggle Activation) 执行引脚,并添加 返回节点(Return Node) 。
- 勾选 返回节点(Return Node)上 成功(Success) 旁边的复选框。
- 在 我的蓝图(My Blueprint) 面板中,找到 变量(Variables) 类别,将 ShouldLookAt 变量拖入图表中,并从列表选择 Get ShouldLookAt 。
- 从 Get ShouldLookAt 节点拖出引脚,并添加 Select Color 节点。
- 拖出 Select Color 节点的 返回值(Return Value) 输出引脚,并将其连接到来自 Switch on Connection Points 的 切换激活(Toggle Activation) 执行的 返回节点(Return Node) 的 颜色(Color) 引脚。
-
在 Set Color 节点上,点击 A 和 B 旁边的复选框,打开取色器并为它们分别设置颜色。
- 编译(Compile) 并 保存(Save) 。
你的"获取按钮颜色"图表应该如下图所示:
Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_1" ExportPath="/Script/BlueprintGraph.K2Node_FunctionEntry'/Game/NewBlueprint.NewBlueprint:GetButtonColor.K2Node_FunctionEntry_1'"
ExtraFlags=201457664
FunctionReference=(MemberName="GetButtonColor")
bIsEditable=True
NodePosX=-16
NodePosY=-16
NodeGuid=26CF79447A4EEC8BBFB83F9435B24545
CustomProperties Pin (PinId=92DAE84A13453094DD283D8F8ADD1E94,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(VCamK2Node_SwitchOnModifierConnectionPoints_0 B1B47A244E4FDAB35D2576AAF1370A82,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=59E716980E406D2BC8AFE5BFC2B8AF6C,PinName="Connection Point",Direction="EGPD_Output",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(VCamK2Node_SwitchOnModifierConnectionPoints_0 0DDAC9D03946E21CB02112B8318A674F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties UserDefinedPin (PinName="Connection Point",PinType=(PinCategory="name"),DesiredPinDirection=EGPD_Output)
End Object
Begin Object Class=/Script/VCamBlueprintNodes.VCamK2Node_SwitchOnModifierConnectionPoints Name="VCamK2Node_SwitchOnModifierConnectionPoints_0" ExportPath="/Script/VCamBlueprintNodes.VCamK2Node_SwitchOnModifierConnectionPoints'/Game/NewBlueprint.NewBlueprint:GetButtonColor.VCamK2Node_SwitchOnModifierConnectionPoints_0'"
NodePosX=336
NodePosY=-16
NodeGuid=E585160BF547C2601CC9829F6AAB55A5
CustomProperties Pin (PinId=FBF2C367B548BC2F7226C4B84E58BD82,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_FunctionResult_0 F74FB07840444CBD6B886DAA56DB1D14,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B1B47A244E4FDAB35D2576AAF1370A82,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_FunctionEntry_1 92DAE84A13453094DD283D8F8ADD1E94,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0DDAC9D03946E21CB02112B8318A674F,PinName="Selection",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",LinkedTo=(K2Node_FunctionEntry_1 59E716980E406D2BC8AFE5BFC2B8AF6C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=65151DD07E4F2E56CD2A88948B199424,PinName="NotEqual_NameName",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C7A8794A9A412965665FDA848AD9CD5E,PinName="Toggle Activation",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_FunctionResult_1 F74FB07840444CBD6B886DAA56DB1D14,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionResult Name="K2Node_FunctionResult_1" ExportPath="/Script/BlueprintGraph.K2Node_FunctionResult'/Game/NewBlueprint.NewBlueprint:GetButtonColor.K2Node_FunctionResult_1'"
FunctionReference=(MemberName="GetButtonColor")
bIsEditable=True
NodePosX=960
NodePosY=-16
NodeGuid=111BAFC79040378A326432B3121515B1
CustomProperties Pin (PinId=F74FB07840444CBD6B886DAA56DB1D14,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(VCamK2Node_SwitchOnModifierConnectionPoints_0 C7A8794A9A412965665FDA848AD9CD5E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=8C3DD6229B443F6626838E8BA6A6B470,PinName="Color",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_0 E0FD08BE9D413F3877B223BE63C7BD50,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=340AF24CA0425436F95BA989F5DD1B7C,PinName="Success",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties UserDefinedPin (PinName="Color",PinType=(PinCategory="struct",PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'"),DesiredPinDirection=EGPD_Input)
CustomProperties UserDefinedPin (PinName="Success",PinType=(PinCategory="bool"),DesiredPinDirection=EGPD_Input,PinDefaultValue="true")
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_0" ExportPath="/Script/BlueprintGraph.K2Node_VariableGet'/Game/NewBlueprint.NewBlueprint:GetButtonColor.K2Node_VariableGet_0'"
VariableReference=(MemberName="Shoul Look At",MemberGuid=4646A2881B4EA38DF2F60297A332BD95,bSelfContext=True)
NodePosX=496
NodePosY=192
NodeGuid=E8783A803F4A809ABDEBC2A9EAE24853
CustomProperties Pin (PinId=6EBD905FD146E5703C43D8A57E27214C,PinName="Shoul Look At",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",LinkedTo=(K2Node_CallFunction_0 C1D7E01646446472828843B25221B62C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=612C39AE224F2B4BEF8E029BF231068C,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/Engine.BlueprintGeneratedClass'/Game/NewBlueprint.NewBlueprint_C'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Game/NewBlueprint.NewBlueprint:GetButtonColor.K2Node_CallFunction_0'"
bIsPureFunc=True
FunctionReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",MemberName="SelectColor")
NodePosX=656
NodePosY=96
NodeGuid=B626F22F6F46A547D60F11814E1B5BA8
CustomProperties Pin (PinId=00F6C0C8B84FE441CE70D7B0D12F64E0,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E66702D41F4E148AC73D1FB2968DCA42,PinName="A",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E0CFF17913472AC0CC0CB38887DF3CFA,PinName="B",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=0.000000,B=1.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C1D7E01646446472828843B25221B62C,PinName="bPickA",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",LinkedTo=(K2Node_VariableGet_0 6EBD905FD146E5703C43D8A57E27214C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E0FD08BE9D413F3877B223BE63C7BD50,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_FunctionResult_1 8C3DD6229B443F6626838E8BA6A6B470,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionResult Name="K2Node_FunctionResult_0" ExportPath="/Script/BlueprintGraph.K2Node_FunctionResult'/Game/NewBlueprint.NewBlueprint:GetButtonColor.K2Node_FunctionResult_0'"
FunctionReference=(MemberName="GetButtonColor")
bIsEditable=True
NodePosX=960
NodePosY=224
NodeGuid=4FB1A3892743575C9DDF8C97C6136D7C
CustomProperties Pin (PinId=F74FB07840444CBD6B886DAA56DB1D14,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(VCamK2Node_SwitchOnModifierConnectionPoints_0 FBF2C367B548BC2F7226C4B84E58BD82,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=8C3DD6229B443F6626838E8BA6A6B470,PinName="Color",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=340AF24CA0425436F95BA989F5DD1B7C,PinName="Success",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties UserDefinedPin (PinName="Color",PinType=(PinCategory="struct",PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.LinearColor'"),DesiredPinDirection=EGPD_Input)
CustomProperties UserDefinedPin (PinName="Success",PinType=(PinCategory="bool"),DesiredPinDirection=EGPD_Input,PinDefaultValue="false")
End Object
复制以上蓝图代码,直接将其粘贴到你的VCM_LookAt修饰符中,即可在你自己的项目中重现以上图表。
设置修饰符蓝图逻辑
在此小节中,你将设置控件如何请求、解析和应用在之前小节中配置的信息。
如需定义规则,请执行以下操作:
- 打开你在此页面的创建VCam控件和初始设置小节中创建的 VCW_ConnectionButton VCam控件。
-
点击 图表(Graph) 按钮,切换到图表编辑模式。
- 在蓝图工具栏中,点击 类默认值(Class Defaults) 。
- 在 细节(Details) 面板中,找到 VCam连接(VCam Connections) 类别,展开 连接(Connection) ,然后展开 按钮(Button) 。
-
点击 必需接口(Required Interfaces) 旁边的 添加(+) 图标,并从列表选择 BPI_ConnectionButton 蓝图接口。
将蓝图接口分配给此VCam控件蓝图时,你可以使用 必需接口(Required Interfaces) 或 可选接口(Optional Interfaces) 。将其分配给必需接口后,你的修饰符蓝图就必须实现你的蓝图接口,连接才能成功。如果你选择可选接口,无论你的修饰符蓝图是否实现蓝图接口,连接都可以成功。
- 右键点击事件图表并从 VCam连接(VCam Connections) 类别添加 获取连接(Get Connections) 变量。
- 从 Get Connections 节点拖出引脚,并添加 Find 节点。
- 拖出 Find 节点的蓝色引脚,并添加 Get Connected Modifier 节点。
- 拖出 Get Connected Modifier 节点的 返回值(Return Value) 引脚,并添加 Is Valid 节点。
- 拖出 Get Connected Modifier 节点的 返回值(Return Value) 引脚,并添加 Get Button Color (Message) 节点。
- 拖出 Find 节点的蓝色引脚,并添加 Get Connected Point Name 节点。
- 拖出 Get Connected Point Name 节点的 返回值(Return Value) 引脚,并将其连接到 Get Button Color 节点的 连接点(Connection Point) 输入。
- 从 Event Tick 节点拖出引脚,并将其连接到 Is Valid 节点的 执行(Exec) 输入。
- 拖出 Is Valid 节点的 有效(Is Valid) 执行引脚,并将其连接到 Get Button Color 节点。
- 拖出 获取按钮颜色(Get Button Color) 执行引脚,并添加 Branch 节点。
- 拖出 Get Button Color 节点的 成功(Success) 引脚,并将其连接到 Branch 节点的 条件(Condition) 引脚。
- 在 我的蓝图(My Blueprint) 面板的 变量(Variables) 类别下,将 按钮(Button) 变量拖入图表中,并从列表选择 Get Button 。
- 从 Button 节点拖出引脚,并添加 Set Background Color 节点。
- 拖出 Branch 节点的 True 引脚,并将其连接到 Set Background Color 节点上的输入。
- 拖出 Get Button Color 节点的 颜色(Color) 引脚,并将其连接到 Set Background Color 节点的 背景颜色(Background Color) 引脚。
- 编译(Compile) 并 保存(Save) 。
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_0" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_VariableGet_0"'
VariableReference=(MemberName="Connections",bSelfContext=True)
NodePosX=160
NodePosY=1312
NodeGuid=7B71DF2B4BDA58669EB51FAC3109ADC1
CustomProperties Pin (PinId=B4A2F0FD434ACB31305EF9BAB9A1F416,PinName="Connections",PinFriendlyName=NSLOCTEXT("", "6DA68F8F463AD2F15AC82D917EB07810", "Connections"),Direction="EGPD_Output",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(TerminalCategory="struct",TerminalSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"'),PinType.ContainerType=Map,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_1 458CBF2B44C1A0F7078ED6A8BA3AE5E0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=AB9F419A49FF0EDD061D58B0DDB4E304,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamWidget"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_1" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_1"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.BlueprintMapLibrary"',MemberName="Map_Find")
NodePosX=320
NodePosY=1312
NodeGuid=D7D8DA554B93C48CF40F4C96D4DDC9B2
CustomProperties Pin (PinId=42109F06439B767E7FD41195E8576008,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nBlueprint Map Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.BlueprintMapLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__BlueprintMapLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=458CBF2B44C1A0F7078ED6A8BA3AE5E0,PinName="TargetMap",PinToolTip="Target Map\nMap of Names to VCam Connection Structures\n\nThe map to perform the lookup on",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(TerminalCategory="struct",TerminalSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"'),PinType.ContainerType=Map,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_0 B4A2F0FD434ACB31305EF9BAB9A1F416,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=DEC16E5842A856284322CB9C099103EB,PinName="Key",PinToolTip="Key\nName (by ref)\n\nThe key that will be used to look the value up",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Button",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=305871E9448ECE4A0F4664B10CC8B3DE,PinName="Value",PinToolTip="Value\nVCam Connection Structure\n\nThe value associated with the key, default constructed if key was not found",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 2C24D0BA4FEA5447DCC888AF4F9BA2F4,K2Node_CallFunction_4 6A7D78114620AEDFFF3D249D3DF3EFB0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=948BD14D4BECFA2568C2AB8A705AE6E0,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if an item was found (False indicates nothing in the map uses the provided key)",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_2"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',MemberName="GetConnectedModifier_VCamConnection")
NodePosX=624
NodePosY=1280
NodeGuid=A520C4B548860B66478E1CB93390E0C2
CustomProperties Pin (PinId=C3935D4848C299302AC932AB3D02E03C,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nVCam UIFunction Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/VCamCore.Default__VCamUIFunctionLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=2C24D0BA4FEA5447DCC888AF4F9BA2F4,PinName="Connection",PinToolTip="Connection\nVCam Connection Structure (by ref)",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_1 305871E9448ECE4A0F4664B10CC8B3DE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C14F1DD94B6762807DEEEAA2DCD5D725,PinName="ReturnValue",PinToolTip="Return Value\nVCam Modifier Object Reference\n\n Gets the Connected Modifier for the given VCam Connection\n The returned Modifier is guaranteed to be valid if IsConnected() is true",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 F2C833534BF96BA96EDABA9F092238BD,K2Node_Knot_3 1F0A8E1A42C7387E940949B66B016187,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_0" ExportPath=/Script/BlueprintGraph.K2Node_MacroInstance'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_MacroInstance_0"'
MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=64422BCD430703FF5CAEA8B79A32AA65)
NodePosX=928
NodePosY=1216
NodeGuid=E9A50DFB4FD468FCCD440897079F335C
CustomProperties Pin (PinId=210F92B94F5BAA1F9DB42B80A823DB3C,PinName="exec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_2 6F623B8A45BF7E5451ED599E561311F7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=F2C833534BF96BA96EDABA9F092238BD,PinName="InputObject",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 C14F1DD94B6762807DEEEAA2DCD5D725,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=579DC6854D6CAB3EAF85B6B785FA971D,PinName="Is Valid",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_0 57C3E29E4BFE7106987F068E5E1F32DE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=8CBDCF55409029EB9B56438758EE16DB,PinName="Is Not Valid",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Message Name="K2Node_Message_0" ExportPath=/Script/BlueprintGraph.K2Node_Message'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Message_0"'
bIsInterfaceCall=True
FunctionReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Game/VCamComponentSetup/BPI_ConnectionButton.BPI_ConnectionButton_C"',MemberName="GetButtonColor",MemberGuid=4F3D5F6E4FCE96FD90A6139881563900)
NodePosX=1216
NodePosY=1200
NodeGuid=72A3A351459A7326876EF79777D9E375
CustomProperties Pin (PinId=57C3E29E4BFE7106987F068E5E1F32DE,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_0 579DC6854D6CAB3EAF85B6B785FA971D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=17DFD49A4ECA99FA35E4C296BFA74B1F,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_0 51EF46D441B54F04CCB9AB83C7F2FAB7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=846437454E5782F01C33EF84922BE61F,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_4 B63ED06E45BAC353F775ACBF5F0FD275,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=53868EE64F450C9F71E72BAADFB3D6AD,PinName="ConnectionPoint",PinToolTip="Connection Point\nName",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",LinkedTo=(K2Node_Knot_5 D1B4045649E13A0A6AB829B1C4782053,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=21EB0196490FECAC06BD3B96AB1C4A34,PinName="Color",PinToolTip="Color\nLinear Color Structure",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 DC3ED1EE4ECDBAC891DFB692045895C1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6B9B55644276D84F2F69EFB4B4DADD0F,PinName="Success",PinToolTip="Success\nBoolean",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",LinkedTo=(K2Node_IfThenElse_0 388EC7F94E2216FAF4C0C29297F3A3BB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_4" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_4"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',MemberName="GetConnectionPointName_VCamConnection")
NodePosX=624
NodePosY=1376
NodeGuid=ED65A93D4CE08AB32A1213A34354C2D8
CustomProperties Pin (PinId=BAC94B304846341AD150F8A970FE4CB4,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nVCam UIFunction Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamUIFunctionLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/VCamCore.Default__VCamUIFunctionLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6A7D78114620AEDFFF3D249D3DF3EFB0,PinName="Connection",PinToolTip="Connection\nVCam Connection Structure (by ref)",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/VCamCore.VCamConnection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_1 305871E9448ECE4A0F4664B10CC8B3DE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4983E9BF4F4B209AA49A43BDC7D0A0DA,PinName="ReturnValue",PinToolTip="Return Value\nName\n\n Gets the name of the associated Connection Point for a given VCam Connection.\n This will return "None" if the IsConnected() is false",Direction="EGPD_Output",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",LinkedTo=(K2Node_Knot_5 FE64C76A459B5A66A62604ACF72F644A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_IfThenElse Name="K2Node_IfThenElse_0" ExportPath=/Script/BlueprintGraph.K2Node_IfThenElse'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_IfThenElse_0"'
NodePosX=1552
NodePosY=1216
NodeGuid=A40BCB884171B13B1A4488AAC6FCBEC9
CustomProperties Pin (PinId=51EF46D441B54F04CCB9AB83C7F2FAB7,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_0 17DFD49A4ECA99FA35E4C296BFA74B1F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=388EC7F94E2216FAF4C0C29297F3A3BB,PinName="Condition",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",LinkedTo=(K2Node_Message_0 6B9B55644276D84F2F69EFB4B4DADD0F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E839B8F640E935B7C1E80CB017239A55,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "true", "true"),Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_5 4BCF53234CF9DDB46E6CCAA3EC1AC50B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=37D3952843E526F23F34448C28AA8124,PinName="else",PinFriendlyName=NSLOCTEXT("K2Node", "false", "false"),Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name="K2Node_VariableGet_3" ExportPath=/Script/BlueprintGraph.K2Node_VariableGet'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_VariableGet_3"'
VariableReference=(MemberName="Button",bSelfContext=True)
NodePosX=1584
NodePosY=1344
NodeGuid=02F6194A4A2AE54EB212FAB648204363
CustomProperties Pin (PinId=0EA7D4EB43C1855A41D2E2B5ADA6ABA9,PinName="Button",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/UMG.Button"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_5 B9ABAC97415820E10890B2BD1BDCDF69,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=85E59B5844230407C1BC6CB14D0BC51F,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/UMG.WidgetBlueprintGeneratedClass'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_5" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_CallFunction_5"'
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/UMG.Button"',MemberName="SetBackgroundColor")
NodePosX=1808
NodePosY=1200
NodeGuid=0FFAC8D74957C70FCA96C19DEDC11896
CustomProperties Pin (PinId=4BCF53234CF9DDB46E6CCAA3EC1AC50B,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_IfThenElse_0 E839B8F640E935B7C1E80CB017239A55,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=9D63DB434E2C6FB91A2318B7CD0BD762,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B9ABAC97415820E10890B2BD1BDCDF69,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nButton Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/UMG.Button"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableGet_3 0EA7D4EB43C1855A41D2E2B5ADA6ABA9,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=F428AC284CFA1B0980121E9FFF5F749F,PinName="InBackgroundColor",PinToolTip="In Background Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_2 0FA03B924C67403A861B7F8D792F9AE6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_0" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Knot_0"'
NodePosX=1536
NodePosY=1392
NodeGuid=077CF3464A31EBC27C1DFEA85B14E05B
CustomProperties Pin (PinId=DC3ED1EE4ECDBAC891DFB692045895C1,PinName="InputPin",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_0 21EB0196490FECAC06BD3B96AB1C4A34,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=9E10D7D3475E8C00AD2E2898751F935E,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_2 0FB610794D6312D224890F974E15A284,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_2" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Knot_2"'
NodePosX=1728
NodePosY=1392
NodeGuid=46A85F7C4B412DDEB8CADFB79CB362DA
CustomProperties Pin (PinId=0FB610794D6312D224890F974E15A284,PinName="InputPin",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_0 9E10D7D3475E8C00AD2E2898751F935E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0FA03B924C67403A861B7F8D792F9AE6,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_5 F428AC284CFA1B0980121E9FFF5F749F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_3" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Knot_3"'
NodePosX=880
NodePosY=1328
NodeGuid=590F4E764D26B3471F39538F5FB686E7
CustomProperties Pin (PinId=1F0A8E1A42C7387E940949B66B016187,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 C14F1DD94B6762807DEEEAA2DCD5D725,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=98EC05D8437DE5C2BB6AF2AFCA40666F,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_4 2AD83E904E3427D056D642A3750393CC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_4" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Knot_4"'
NodePosX=1136
NodePosY=1328
NodeGuid=E396DB3B41AC71587318ADBA9F8CE145
CustomProperties Pin (PinId=2AD83E904E3427D056D642A3750393CC,PinName="InputPin",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_3 98EC05D8437DE5C2BB6AF2AFCA40666F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B63ED06E45BAC353F775ACBF5F0FD275,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/VCamCore.VCamModifier"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_0 846437454E5782F01C33EF84922BE61F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_5" ExportPath=/Script/BlueprintGraph.K2Node_Knot'"/Game/VCamComponentSetup/VCW_ConnectionButton.VCW_ConnectionButton:EventGraph.K2Node_Knot_5"'
NodePosX=1136
NodePosY=1408
NodeGuid=F9F9878843B10D94127AFF8E6B47C33C
CustomProperties Pin (PinId=FE64C76A459B5A66A62604ACF72F644A,PinName="InputPin",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_4 4983E9BF4F4B209AA49A43BDC7D0A0DA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=D1B4045649E13A0A6AB829B1C4782053,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_0 53868EE64F450C9F71E72BAADFB3D6AD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
复制以上蓝图代码,直接将其粘贴到你的VCM_LookAt修饰符中,即可在你自己的项目中重现以上图表。
最终结果
完成本指南后,你将拥有一个自定义虚拟摄像机,它使用修饰符、连接点和VCam控件,通过视口中可开启/关闭的变色按钮来打开和关闭摄像机追踪。