播放音频

播放音频的步骤

使用AtomComponent播放音频数据。
具体处理步骤如下。
  1. 包含CriWareApi.h、AtomComponent.h。
  2. 创建AtomComponent。
  3. 注册 AtomComponent。
  4. 加载音频数据Asset。
  5. 用UAtomComponent::SetSound函数在AtomComponent中设置音频数据。
  6. 用UAtomComponent::Play函数开始播放。
具体代码如下。
/* 包含播放音频所需的头文件 */
#include "CriWareApi.h"
#include "AtomComponent.h"
void AMyActor::BeginPlay()
{
Super::BeginPlay();
/* 创建AtomComponent */
UAtomComponent* Player = NewObject<UAtomComponent>(this, UAtomComponent::StaticClass());
if (Player == nullptr) {
UE_LOG(MyActor, Error, TEXT("Failed to create AtomComponent."));
return;
}
/* AtomComponent的注册 */
Player->RegisterComponent();
/* 动态加载Asset */
/* 注意)需要根据要播放的内容更改Asset的路径。 */
/*    (本示例中使用Content文件夹下的voice_a。) */
USoundAtomCue* SoundData = Cast<USoundAtomCue>(
StaticLoadObject(USoundAtomCue::StaticClass(), NULL, TEXT("/Game/voice_a")));
if (SoundData == nullptr) {
UE_LOG(MyActor, Error, TEXT("Failed to load SoundAtomCue."));
return;
}
/* 设置音频数据 */
Player->SetSound(SoundData);
/* 开始播放 */
Player->Play();
}
备注:
也可以通过头文件将音频数据(USoundAtomCue*)声明为UPROPERTY,从编辑器或蓝图指定音频数据。
class MYPROJECT_API AMyActor : public AActor
{
/* 音频数据 */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="MyActor")
class USoundAtomCue* Sound;
};
注意
音频播放期间调用UAtomComponent::SetSound函数时,音频有可能会停止。
详细信息请参照FAQ的 执行SetSound时音频停止。

注意
请注意,由于虚幻引擎的规范,从C++代码动态加载的Assets可能不包括在包装中。
详细信息请参照 打包设置(与关卡无关的Asset)