DY()
public:
UTiaoQiWidget* widget;
UFUNCTION(BlueprintCallable)
void setWidget(UTiaoQiWidget* w=nullptr);
}
TiaoQi.cpp:
#include "TiaoQiWidget.h"
void ATiaoQi::setWidget(UTiaoQiWidget* w) { //在控件蓝图中调用,参数为self即可。
widget = w; //之后即可调用widget->humanFinish();
}
播放wav格式音效
.h
UCLASS()
class UNREALTIAOQI_API ATiaoQi : public APawn
{
GENERATED_BODY()
public:
USoundWave* jumpSoundWave[6];
ATiaoQi();
void playSound();
}
.cpp
#include "Sound/SoundWave.h"
const FString jumpSound[5] = {
TEXT("/Script/Engine.SoundWave'/Game/soundFX/Jump/s1.s1'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/Jump/s2.s2'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/Jump/s3.s3'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/Jump/s4.s4'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/Jump/s5.s5'") };
const FString nextStepSound[5] = {
TEXT("/Script/Engine.SoundWave'/Game/soundFX/humanNextStep/button01_mp3.button01_mp3'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/humanNextStep/button03_mp3.button03_mp3'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/humanNextStep/button04_mp3.button04_mp3'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/humanNextStep/button05_mp3.button05_mp3'"),
TEXT("/Script/Engine.SoundWave'/Game/soundFX/humanNextStep/button06_mp3.button06_mp3'") };
ATiaoQi::ATiaoQi() {
for (int i = 0; i < 5; ++i) {
ConstructorHelpers::FObjectFinder<USoundWave> jumpSoundObject(*jumpSound[i]);
jumpSoundWave[i] = jumpSoundObject.Object;
}
}
void ATiaoQi::playSound(){
const FVector3d T = ...; // 发声地点,省略具体值。
UGameplayStatics::PlaySoundAtLocation(this, jumpSoundWave[FMath::RandRange(0, 4)], T);
//下面这种动态载入方式也可以
USoundWave* HitSound = LoadObject<USoundWave>(this, *nextStepSound[FMath::RandRange(0,4)]);
//下面这种是直接发声,无关具体位置。
if (HitSound) {UGameplayStatics::PlaySound2D(GetWorld(), HitSound);}
}