蓝图中的转换不同转换节点的示例和使用案例。
在 蓝图 中使用 Cast To 节点时,简单而言,就是在尝试检查发出转换的对象是否为被转换的特定对象。换言之,您创建了一个特殊的角色蓝图(如名为 MyCharacter),其中包含变量或其他自定义功能,并将其作为默认 Pawn 类(或所有玩家角色默认使用的角色蓝图)指定。
如需从另一个蓝图访问玩家角色的属性,可使用 Get Player Character 节点以常规方式(设置/获取其位置、旋转灯)对玩家角色产生影响,但无法访问已添加到 MyCharacter 蓝图的自定义功能,因为您获取的是玩家角色而非特定类型的角色。
使用 Get Player Character 节点,再使用 Cast To MyCharacter 节点(特殊的角色蓝图),即可确认玩家角色是否为 MyCharacter,以便访问该蓝图中所包含的变量、函数、事件或其他特殊功能。
在此页面中您可了解到转换的部分使用情况、查看 Cast To 节点的使用范例、了解关于目标蓝图转换的内容以及其他类型的转换。
范例使用情况
以下是几个 蓝图转换 使用范例:
设置一个 Cast To 范例
下例说明如何使用 Cast To 节点从一个蓝图中访问另一个蓝图。
在此示例中,关卡中包含火焰效果蓝图(它是Actor),我们希望让它与玩家使用的可操作角色蓝图通信。当玩家进入火焰时,我们希望向角色蓝图发送信号,通知它玩家已进入火焰,它们现在应该受到伤害。通过使用OverlapEvent的返回值,我们可以转换到角色蓝图并访问它里面的事件、函数或变量。
上面的火焰效果是 Blueprint_Effect_Fire 资源(初学者内容包中随附的)。
我们向蓝图添加了 触发器(Trigger) 球体组件并将它的碰撞设置为 OverlapOnlyPawn。
使用蓝图转换,我们需要执行以下操作:
1.指定给 默认Pawn类(Default Pawn Class)(可操作角色)的角色蓝图是我们要访问的"目标蓝图(Target Blueprint)。
你可以从 编辑(Edit) 菜单中的 项目设置(Project Settings) 下的 地图和模式(Maps & Modes) 部分中查看 默认Pawn类(Default Pawn Class)。 2.现在我们已经知道我们的目标是 MyCharacter 蓝图,可以在其中创建 布尔(Bool) 变量,声明玩家是否 着火了(Is on Fire)。 在 Event Tick 上面输入一个 分支(Branch),如果为 True,我们向屏幕输出 应用伤害(Apply Damage)(与True相连接的是应用伤害脚本)。
3.在 Blueprint_Effect_Fire 蓝图中,我们为 触发器(Trigger) 添加两个事件:OnComponentBeginOverlap 和 OnComponentEndOverlap。
4.添加好事件之后,我们从 其他Actor(Other Actor) 引脚拖出引线并在搜索字段中输入 Cast To My。
在此处我们可以确定/指定要触发事件的Actor(MyCharacter蓝图)并 转换到(Cast To) 它,以便我们能够在火焰蓝图中访问它。
5.选择 转换到MyCharacter(Cast To MyCharacter) 选项。
6.添加好节点之后,我们可以从 作为我的角色C(As My Character C) 引脚拖出引线并访问它里面的事件、变量、函数等(在本示例中为 Set Is on Fire)。
7.然后,在 Blueprint_Effect_Fire 蓝图中,这两个事件将如下图中所示。
当与火焰重叠时,我们将 MyCharacter 蓝图中的 IsOnFire 变量设置为 True,当不与火焰重叠时,我们将该变量设置为 False。 在 MyCharacter 蓝图中,当 IsOnFire 设置为 True 时(借助火焰蓝图),我们向屏幕输出 应用伤害(Apply Damage)(如果你创建了生命值/伤害系统,可以在此处应用伤害并减小玩家的生命值)。
目标蓝图转换
在某些情况下,你也可以使用变量来 转换到(Cast To) 特定类型的蓝图来访问它。
在上图的1部分中,我们创建了 保存游戏对象(Save Game Object) 并将它指定给 SaveGameObject 变量。然后我们使用该变量来 转换到(Cast To) MySaveGame 保存游戏蓝图(我们可以使用它来传递或检索高分、最短用时等保存游戏信息)。
在上图的2部分中,我们创建了 控件(Widget)蓝图 并将它指定给 UserWidget 变量。然后我们使用该变量来 转换到(Cast To) MyWidgetBlueprint 控件蓝图(我们可以使用它从控件蓝图(可以为要访问的HUD或其他UI元素)更新或检索信息)。
其他类型的转换
存在一些可用于 转换到(Cast To) 不同类别的 蓝图 的特殊函数。
在上面的示例图中,我们给出了以下示例:
在上面的各个示例中,从 作为我的X(As My X)(X是蓝图类型)节点拖出引线之后,你将能够访问相应蓝图中的事件、变量、函数等。
另外需要注意的是,可以使用 获取玩家角色(Get Player Character) 和 获取玩家控制器(Get Player Controller) 节点中的 玩家索引(Player Index) 值来指定多玩家场景中的不同玩家。对于单人玩家场景,将这些值保留为0即可。
网友评论