音声の再生

音声再生手順

音声データの再生には、AtomComponentを使用します。
具体的な処理手順は以下のとおりです。
  1. CriWareApi.h、AtomComponent.hをインクルードする。
  2. AtomComponentを作成する。
  3. AtomComponentを登録する。
  4. 音声データアセットをロードする。
  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();
/* アセットを動的にロード */
/* 注意)アセットのパスは再生するコンテンツに合わせて変更する必要があります。 */
/*    (本サンプルでは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++コードから動的にロードするアセットは、Unreal Engineの仕様によりパッケージに含まれない可能性があるためご注意ください。
詳細は「 パッケージ化設定(レベルに非依存のアセット) 」をご覧ください。