蓝图通信
蓝图通信指的是蓝图间的信息传递、数据分享、数据引用等一系列数据交互的操作。
蓝图通信的类型
关卡蓝图或蓝图类各自在蓝图之内的信息交互;
关卡蓝图和蓝图类与场景内部的对象的通信;
蓝图类之间的信息交互;
通过中间变量进行信息的交互;
蓝图类与关卡蓝图之间的信息交互;
遍历搜索
引用蓝图类
1.关卡蓝图或蓝图类各自在蓝图之内的信息交互
蓝图内部的信息交互主要使用的是自定义事件节点----AddCustomEvent。
2.关卡蓝图和蓝图类与场景内部对象的通信
2.1关卡蓝图与场景内部对象的通信
视口中选择对象,可以在关卡蓝图中获取对象的引用,从而Get和Set对象行为。
蓝图实例为:
2.2 蓝图类与场景内部对象的通信
创建蓝图类,在蓝图类中添加变量,类型为StaticMeshActor,并将其变量设置为公有的。
将创建的蓝图类放置在视口中,在细节面板,可以使用吸管为变量代理场景中的对象。只能拾取静态模型。
如果要代理场景中的所有对象,需要将变量设置为Actor
在事件图表中可以操作代理的场景对象。
通信蓝图为:
3.蓝图类之间的信息交互
3.1 创建蓝图类BP_TextA,并添加组件TextRender。
3.2创建蓝图类BP_TextB,并添加组件TextRender,添加变量Text,类型设置为Text
3.3 BP_TextA访问BP_TextB的变量Text和组件TextRender
3.4 在蓝图类BP_TextA中添加变量,类型设置为BP_TextB,并将其设置为public
3.5 将两个蓝图放置在关卡中,可以在BP_TextA的细节面板中,利用吸管,设置代理BP_TetxB
3.6 蓝图实现类之间的信息交互
4.通过中间变量进行信息的交互
获取第三人称对游戏场景的操纵权限的设置如下图:
蓝图类之间的信息交互是有一定局限性的,它需要通信的蓝图类都在关卡中,才会进行通信。
编辑ThirdPersonCharacter蓝图,添加变量BP_TextA和BP_TextB,设置其为public
GetPlayerPawn可以获取场景中的第一个玩家
利用类型转换节点CastToThirdPersonCharacter,获取场景中的第三人称。
该节点有转换成功和转换失败两种情况。
注意:通过中间变量一般用于两个蓝图类不在同一个游戏场景的情况。
蓝图实例如下:
不足之处,每次使用BPTextB都需要进行类型转换。这时可以将转换后的BP_TextB转换为变量。
5.蓝图类与关卡蓝图之间的通信
5.1 通过蓝图类控制关卡蓝图自定义事件的方法。
在关卡蓝图中利用AddCustomEvent定义自定义事件。
在蓝图类中利用Execute Console Command,在该节点中的Command,输入ce 时间名。
蓝图类:
关卡蓝图类:
6.遍历搜索 引用蓝图类
应用场景:一个蓝图类可能会被复制很多次,且玩家操纵的角色要与每个蓝图类产生不同的信息交互。
在玩家蓝图编辑器中,GetAllActorsOfClass 获取场景中的所有蓝图类。