UE學(xué)習(xí)記錄:DashProjectile

添加一個(gè)名為RGProjectileBase的Actor類
類中添加了void Explode(),用BlueprintCallable和BlueprintNativeEvent標(biāo)記
BlueprintCallable
在ue4中用來(lái)修飾UFUNCTION,表示該函數(shù)可以在藍(lán)圖中可調(diào)用
BlueprintCallable有執(zhí)行引腳
BlueprintCallable函數(shù)返回值會(huì)在調(diào)用這個(gè)函數(shù)的作用域中創(chuàng)建一個(gè)局部變量
BlueprintNativeEvent
在ue4中是用來(lái)修飾UFUNCTION的,表示該函數(shù)可以在C++和藍(lán)圖中同時(shí)實(shí)現(xiàn)
在C++中的實(shí)現(xiàn)需要在自身的方法名加一個(gè)后綴_Implementation,并可以是virtual
引擎中多處這樣實(shí)現(xiàn)派生類重寫
優(yōu)先調(diào)用藍(lán)圖中的Event,如果藍(lán)圖中該Event沒(méi)有方法體,則調(diào)用C++中的實(shí)現(xiàn)。
要在藍(lán)圖腳本中實(shí)現(xiàn)該函數(shù):BP_RGDashProjectile(我的藍(lán)圖)>函數(shù)>重載>Explode

添加一個(gè)名為RGDashProjectile的類,繼承RGProjectileBase
GetWorldTimerManager()?
是在游戲開(kāi)始的時(shí)候運(yùn)行的, 需要在BeginPlay() 中調(diào)用,在構(gòu)造函數(shù)中調(diào)用會(huì)崩潰。
功能:可以設(shè)置在經(jīng)過(guò)一段時(shí)間后以固定的時(shí)間間隔重復(fù)或單次執(zhí)行某個(gè)操作。
使用:
在.h文件中定義定時(shí)器句柄TimeHandle----也就是定義一個(gè)定時(shí)器手柄,用來(lái)接收定時(shí)器的控制;
????2.SetTimer()
第一個(gè)參數(shù):把時(shí)間控制權(quán)交給誰(shuí)(TimerHandle_DetonateDelay)
第二個(gè)參數(shù): 類的對(duì)象(this)
第三個(gè)參數(shù): 要執(zhí)行的函數(shù)(&ARGDashProjectile::Explode)
第四個(gè)參數(shù): 間隔時(shí)間(DetonateDelay)
第五個(gè)參數(shù): 執(zhí)行完函數(shù)之后,是否循環(huán)執(zhí)行(不填寫的話默認(rèn)為false)
第六個(gè)參數(shù):執(zhí)行完函數(shù)后,間隔多久循環(huán)執(zhí)行
????3.其他的一些用法
在RGDashProjectile類中對(duì)Explode進(jìn)行實(shí)現(xiàn)時(shí),我需要調(diào)用兩個(gè)定時(shí)器,第一次本可以使用ARGProjectileBase類中定義好的Super::Explode_Implementation(),但其中得Destroy()功能會(huì)導(dǎo)致Actor銷毀,所以得用ClearTimer()清除第一個(gè)定時(shí)器,重新對(duì)其Explode進(jìn)行實(shí)現(xiàn)(把Destroy()去掉)。
SpawnEmitterAtLocation
在指定的Location和Rotation產(chǎn)生效果并銷毀。效果完成后,就會(huì)消失。

封裝攻擊類型
SweepSingleByObjectType
對(duì)世界進(jìn)行指定形狀的掃描,只要命中就返回true