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