03UE蓝图通信

UE蓝图通信

目录


蓝图通信为解决:多个蓝图之间互相调用函数,变量,组件等等问题

以下文章,以简单的例子说明,不做复杂的蓝图内容

情景一

使用情景:两个蓝图类,一个为球体蓝图类,一个为控制器蓝图类,球体类里边自定义一个落下事件设置球体为物理模拟,控制器类想要按键K使得球体落下,想要按键k直接调用球体蓝图类中的自定义落下事件,如何调用?

首先创建两个蓝图类,方法一,方法二都是根据两个类做不同处理

03UE蓝图通信
03UE蓝图通信

????????????????????????????????????????????????????????????

方法一:直接拾取(简单粗暴,局限性一对一)

控制器蓝图类中创建变量,并设置其类型为为球体蓝图类的对象类型,然后点击小眼睛把变量暴露出去,然后选中控制器,从细节面板中选择世界大纲中球体类的实例中的某一个作为控制器蓝图类中的变量(值);如下图所示

03UE蓝图通信

03UE蓝图通信

03UE蓝图通信

方法二:获取类的actor+.(调用)自定义函数/变量

actor比较片面,因为还有widget,暂时不考虑和用户界面的获取,如果过于复杂,读者看文章的时候比较乱,所以暂时以偏概全吧。

(1)获取类的actor+.(调用)自定义函数

一般使用方式:获取类的actor+蓝图类内部自定义函数

通过获取该类的actor,可以返回函数和暴露的变量,然后找到调用执行即可

03UE蓝图通信

当然了获取actor不只是get actor of class这一个方法,还有以下方法

03UE蓝图通信

【注意】当我们想要获取用户界面蓝图类的时候,不能用actor,而是widget(所以获取用户控件的时候要注意)
03UE蓝图通信

(2)获取类的actor+.(调用)变量

03UE蓝图通信

如果想要拿到蓝图类中的某个模型,需要将其转化为变量的形式,也就是【在构建函数中,将此模型——提升变量(任意命名)】

这个时候我们通过get actor of class获取到指定的actor,然后即可拿到这个变量(特别说明的一点,sphere是一个静态网格模型,通过提升变量的形式转换了一个变量为sphere_copy)
03UE蓝图通信

然后对这个sphere copy做操作,和对静态模型sphere操作效果一样,因为本身表示的是一个东西,只不过sphere copy是提升的变量(另外一种形式)
03UE蓝图通信

方法三:蓝图接口

三部曲:①创建接口②被触发端添加这个接口事件③发出触发端发起事件(注意目标,触发谁)

(1)内容浏览器中,创建一个蓝图接口,并更改接口的函数名称

03UE蓝图通信

03UE蓝图通信

(2)在ball球体类中,类设置,添加一个接口

03UE蓝图通信

添加之后一定编译一下,因为ue有时候抽风,右键找不到添加的那个接口事件

(3)然后在Ball中添加这个接口中的指定函数事件,这个事件里边写逻辑即可

03UE蓝图通信

(4)在控制器蓝图中,按键连接【接口函数】,然后需要给一个目标对象,

03UE蓝图通信

情景二

游戏玩家触碰到门的时候,按键F打开门

【注意】 (1)谁和门发生碰撞?人(2)是游戏玩家按键F,而不是其他物体

所以此时应该转换为人物

方法四:类型转换+触发盒子

一般使用方式:类型转换+触发盒子

获取、更改另一个类中的数据,通过类型转换获取该类

Cast TO 转换的对象
03UE蓝图通信

上一篇:Webpack + VueJS 学习、跳坑和总结


下一篇:虚幻4-初识蓝图“设置操控器移动“