UE4-(蓝图)第⼆⼗课蓝图之间的通信(类型转换、公开变
量)
⼀、使⽤转换类型节点,将获取到的物体转换到该类型,进⾏获取对应类型上的变量或者事件。(蓝图类与关卡蓝图通信)
1.使⽤⾃定义事件
2.使⽤类型转换Cast To..节点:想和谁通信就要类型转换到谁,这样就可以获得设置类型转换⽬标的所有的变量和事件函数。
3.使⽤IsValid节点判断传⼊的对象是否有效,为了防⽌出错。
通过⾃定义事件,在其他蓝图中调⽤该物体蓝图中的事件进⾏⼀些操作。
⽰例1:在场景中经过⼀定范围区域时,⼈物速度加速。
1.在Player ⼈物蓝图类中⾃定义事件,将CharacterMovment 组件拖拽到蓝图中,在运动组件中,去设置最⼤移动速度。
2.因为要设置Speed 的值,所以我们可以在⾃定义事件上,将速度的值直接传⼊。将 设置中的变量节点直接拖拽到事件上,直到有对勾出现,然后放置,会⾃动在事件上⽣成⼀个变量。然后将节点连接。(或者选中事件节点,在细节⾯板中设置变量,然后连接节点)
3.在场景中创建Basic下的BoxTrigger,并放置区域⼤⼩⾃⼰定义,
4.蓝图间的通信:打开关卡蓝图,选中世界⼤纲中的box Trigger进⾏创建重叠进⼊,重叠退出事件节点,(当物体重叠之后,重叠进⼊事件也是在执⾏的)
5.在重叠节点中,可以获取到与触发器重叠的Other Actor ,但是可能在场景中有很多物体都与触发器进⾏重叠,所以可以使⽤类型转换节点,获取到我们想要的物体,进⽽获取物体⾝上蓝图类中的变量还有事件。(类型转换后边的类型为⼈物蓝图类名,我的例⼦中使⽤的是Test_Player蓝图类,⾃⼰场景中拖⼊的⼈物模型对应的⽂件夹下的蓝图类类名即可),右键搜索创建Cast to Test_Player节点
系统⾃带的第三⼈称蓝图
6.为了避免错误,所以使⽤判断对象是否可⽤节点 IsValid ,判断类型为转换类型节点中 As _ _的类型。如果有,将获取该⾓⾊蓝图类中的事件,进⾏速度设置,如果在该蓝图中经常⽤同⼀个类型的Player,可⽤直接提升为变量进⾏保存,后期获取或设置很便捷。
7.编译后运⾏。查看效果。
⼆、在⼈物蓝图类中控制⼀个其他物体旋转(两个蓝图类中的通信)1.新建⼀个蓝图类名称为Rotation,打开该蓝图类,在Component⾯板增加Cube
2.在事件图表中,创建⾃定义事件,名称为旋转开始,我的蓝图中,增加变量名称为Rotting,类型为布尔型,因为要控制物体旋转的开始及停⽌,使⽤FlipFlop节点,并设置变量bool值
3.使⽤⽤Tick事件节点的每帧都执⾏,对该物体的旋转进⾏设置,因为存在开关,所以获取Rotting 变量,使⽤Branch节点,对情况进⾏区分,停⽌的时候物体旋转值为0(沿Z轴旋转)
4.整体图
5.打开⼈物⾓⾊对应的蓝图类。因为要获取到要控制哪个物体进⾏旋转,(蓝图之间的通信)所以创建⼀个变量,该变量的类型就是上⾯创建的盒⼦的蓝图类类型(直接在类型中搜索Rotation类型),并将该变量改成共有。然后再场景中放⼊Rotation蓝图拖拽到场景中,并将该物体设置到⼈物蓝图中。
(相当于:Unity 在脚本中⼀个物体⾝上实现旋转操作脚本Rotation类,并将开启⽅法暴露,然后再⼈物模型⾝上的脚本中声明⼀个public Rotation obj 变量,然后再场景中将该物体拖拽到⼈物⾯板上的操作)
选中⼈物模型在细节⾯板中有默认栏,下⾯有我们⾃定义的变量,通过后⾯的吸取图标对场景中拖⼊
的Rotation进⾏吸取。(也可以点击⼈物,在细节⾯板右侧有个⼩锁标志,代表将当前的⾯板固定,不在更改,然后在世界⼤纲视图选中Rotation物体,拖拽操作,会提⽰有绿⾊框)
单人开发选ue4还是unity
拖拽操作:(操作完成后记得将锁图标打开,不打开,之后⽆论选什么物体,该⾯板都不会发⽣变化,更改值也是针对Player进⾏的更改)
6.回到⼈物蓝图类中,在事件图表界⾯编辑控制逻辑,使⽤G键控制物体旋转,获取Rotation变量,对该变量进⾏判断,是否有对象使⽤IsValid节点,Input Object 连接Rotation变量节点,调⽤Rotation中的旋转开始事件
7.所有蓝图中都编译,运⾏按G键查看效果。
三、场景中存在多个同类的物体
1.如果场景中有多个Rotation蓝图类的物体,可以使⽤Get All Actors Off Class,获取场景中所有类型为Actor Class 的物体,输出项为数组。在Actor Class下选择想要查的物体。这⾥选择Rotation
2.控制数组中的某⼀个,使⽤获取数组的Get节点,输⼊参数为数组的⾓标,如果⾓标越界会报错,所以也要使⽤判断物体对象是否有效
3.控制场景中的Rotation蓝图Actor 全部旋转,使⽤foreachloop节点进⾏控制。
4.编译后运⾏。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论