欢迎光临散文网 会员登陆 & 注册

UE4笔记2 背景音乐的操作

2022-10-19 12:36 作者:芯无波澜  | 我要投稿

在播放场景时,常常都会有播放背景音乐的需求,如果要播放背景音乐,可以使用UE4的UAudioComponent组件

在蓝图中使用:

新建一个HUD蓝图,命名为MyGameHUD_BP,将MyGameHUD_BP打开,添加组件-AudioComponent,给AudioComponent设置一个音乐,再添加一个

OnAudioFinished事件(用于播放完了过后重新播放),在里面添加逻辑:

设置定时器,给定时器分配5秒的事情,是否循环选择false,时间到了过后调用Play方法,组件是刚刚创建的AudioComponent。

然后在BeginPlay事件中添加Play方法,组件是刚刚创建的AudioComponent

将HUD分配给当前的GameMode,然后运行,这个时候你就会发现背景音乐就成功响起来了。

在C++中使用:

新建一个HUD类,命名为MyGameHUD

新建一个GameModeBase类,命名为MyGameModeBase

在MyGameModeBase构造函数中添加以下代码:

HUDClass = MyGameHUD::StaticClass();

头文件:

#include "Components/AudioComponent.h"

在HUD添加一个成员变量:

class UAudioComponent* BkSoundPlayer;

在HUD构造函数中添加以下代码:

static ConstructorHelpers::FObjectFinder<USoundCue> BKSoundCueObject(TEXT("SoundCue'/Game/Sounds/HallMenuBKSound.HallMenuBKSound'"));

BkSoundCue = BKSoundCueObject.Object;

BkSoundPlayer = CreateDefaultSubobject<UAudioComponent>(TEXT("BkSoundPlayer"));

BkSoundPlayer->SetupAttachment(RootComponent); //RootComponent是根组件,Actor都会有这个RootComponent可挂载

BkSoundPlayer->SetSound(BkSoundCue); //HallMenuBkSoundCue是一个音乐

BkSoundPlayer->OnAudioFinished.AddDynamic(this,  &MyGameHUD::OnHallMenuBkSoundFinished); //当绑定一个播放结束后事件函数

游戏开始后播放音乐,那么在MyGameHUD的BeginPlay函数中添加以下代码:

BkSoundPlayer->Play(); //播放音乐

事件回调:

void MyGameHUD::OnHallMenuBkSoundFinished()

{

GetWorld()->GetTimerManager().SetTimer(BackgroundSoundTimerHandle, this,

&MyGameHUD::BackgroundSoundTimerHandleCallback, 5.0f, false); //设置定时器延时5秒,只运行一次

}

void MyGameHUD::BackgroundSoundTimerHandleCallback()

{

BkSoundPlayer->Play(); //定时时间到了过后就播放音乐

}

以上就完成了背景音乐的播放

但是要注意的是,在BkSoundPlayer->OnAudioFinished.AddDynamic这句代码添加的回调函数必须得是UFUNCTION,也就是在MyGameHUD类定义的头文件中,

BackgroundSoundTimerHandleCallback函数必须得定义成UFUNCTION,如下所示:

UFUNCTION()

void BackgroundSoundTimerHandleCallback();

AudioComponent还能调整音量等各种关于声音的操作,

比如调节音量为百分之50:

Adjust Volume Duration:声音改变需要的时间(自动淡出淡入)

Adjust Volume Level: 声音音量的百分比大小

BkSoundPlayer->AdjustVolume(0.0f, 0.5f);


UE4笔记2 背景音乐的操作的评论 (共 条)

分享到微博请遵守国家法律