播放音频的步骤
- 使用AtomComponent播放音频数据。
具体处理步骤如下。
- 包含CriWareApi.h、AtomComponent.h。
- 创建AtomComponent。
- 注册 AtomComponent。
- 加载音频数据Asset。
- 用UAtomComponent::SetSound函数在AtomComponent中设置音频数据。
- 用UAtomComponent::Play函数开始播放。
- 具体代码如下。
#include "CriWareApi.h"
#include "AtomComponent.h"
void AMyActor::BeginPlay()
{
Super::BeginPlay();
:
UAtomComponent* Player = NewObject<UAtomComponent>(this, UAtomComponent::StaticClass());
if (Player == nullptr) {
UE_LOG(MyActor, Error, TEXT("Failed to create AtomComponent."));
return;
}
Player->RegisterComponent();
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) 。