UE4蓝图进阶

结构体

如果我们只想保存一些的属性,或者单纯的修改和获取它的值,可以使用结构体Struct

创建一个结构体MyStruct

在其他蓝图类中创建一个MyStruct的变量,使用和修改它的数据

蓝图通信

直接引用

场景中存在该蓝图的实例,就可以通过公开的对象变量获得对目标蓝图的参考

或者直接使用以下方式寻找

通过事件分发器

通过事件传递,触发自定义事件的方式来通信

我们在角色按下F键时,调用MyEvent事件,携带一个参数

在其他蓝图类中先绑定刚才的MyEvent事件,当MyEvent事件触发时,执行我们写的自定义事件,并且可以使用参数

其他任意蓝图类都能绑定MyEvent事件

通过蓝图接口

接口适合一对多的通信

我们创建一个互动的接口,当角色接近时,触发BP_Cube和BP_Sphere的互动事件

在BP_Cube和BP_Sphere的类设置中都继承Interface_hudong接口

我们在搜索接口的时候,会有事件和函数,函数用来触发事件的,所以在一对多的设计中,函数写在一中,事件写在多中

写入BP_Cube和BP_Sphere触发互动事件后的打印事件

在角色中写入由通道检测到的actor,如果是继承互动接口的,就触发它的互动事件

面向对象

面向对象三大特征,封装、继承和多态

案例:封装一把枪的基类,场景中有2把枪都继承这个枪的基类,都继承了能被拾取和发射子弹2个功能,但这2把枪的发射子弹类型不同(多态)

首先,我们一个枪的基类,他有射击,被拾取、被丢弃的方法,还有一个持枪者的变量

当和抢的区域重叠时,设置持枪者为当前角色,并且枪被拾取

枪被拾取的方法 

枪被丢弃的方法 

持枪者按下G时触发枪被丢弃的方法

枪的被拾取、被丢弃都是枪的基础功能,我们创建枪的子类时,这些功能都会被继承

我们还没实现射击的方法,因为每把枪都不一样的射击功能(多态),我们应该写在子类的方法中,父类只定义方法

我们创建枪的2个子类,分别实现他们的射击功能

子弹枪的射击方法 

激光枪的射击方法 

角色调用射击功能 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风里有诗句哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值