UE学习记录:DashProjectile
2023-07-31 00:07:37来源:哔哩哔哩

添加一个名为RGProjectileBase的Actor类


(相关资料图)

类中添加了void Explode(),用BlueprintCallable和BlueprintNativeEvent标记

BlueprintCallable

在ue4中用来修饰UFUNCTION,表示该函数可以在蓝图中可调用

BlueprintCallable有执行引脚

BlueprintCallable函数返回值会在调用这个函数的作用域中创建一个局部变量

BlueprintNativeEvent

在ue4中是用来修饰UFUNCTION的,表示该函数可以在C++和蓝图中同时实现

在C++中的实现需要在自身的方法名加一个后缀_Implementation,并可以是virtual

引擎中多处这样实现派生类重写

优先调用蓝图中的Event,如果蓝图中该Event没有方法体,则调用C++中的实现。

要在蓝图脚本中实现该函数:BP_RGDashProjectile(我的蓝图)>函数>重载>Explode

添加一个名为RGDashProjectile的类,继承RGProjectileBase

GetWorldTimerManager() 

是在游戏开始的时候运行的, 需要在BeginPlay() 中调用,在构造函数中调用会崩溃。

功能:可以设置在经过一段时间后以固定的时间间隔重复或单次执行某个操作。

使用:

在.h文件中定义定时器句柄TimeHandle----也就是定义一个定时器手柄,用来接收定时器的控制;

()

第一个参数:把时间控制权交给谁(TimerHandle_DetonateDelay)

第二个参数: 类的对象(this)

第三个参数: 要执行的函数(&ARGDashProjectile::Explode)

第四个参数: 间隔时间(DetonateDelay)

第五个参数: 执行完函数之后,是否循环执行(不填写的话默认为false)

第六个参数:执行完函数后,间隔多久循环执行

3.其他的一些用法

在RGDashProjectile类中对Explode进行实现时,我需要调用两个定时器,第一次本可以使用ARGProjectileBase类中定义好的Super::Explode_Implementation(),但其中得Destroy()功能会导致Actor销毁,所以得用ClearTimer()清除第一个定时器,重新对其Explode进行实现(把Destroy()去掉)。

SpawnEmitterAtLocation

在指定的Location和Rotation产生效果并销毁。效果完成后,就会消失。

封装攻击类型

SweepSingleByObjectType

对世界进行指定形状的扫描,只要命中就返回true

标签:

下一篇: 最后一页
上一篇: 创业板汽配上市企业排名(汽配公司市值排行榜)

相关新闻

保险时讯