パーシスタントレベルをまたぐサウンド再生

レベルをまたぐサウンド再生方法

Unreal Engineでのゲーム制作に置いてパーシスタントレベルをまたぐサウンド再生を行いたい場合、Game InstanceクラスとSpawnSound2D関数を用いることによって可能となります。
レベルをまたぐサウンド再生を行う具体的な手順は次の通りです。
  1. GameInstanceブループリントクラスを作成します。(例ではAtomParameterInstanceという名前のGameInstanceブループリントクラスを作成しています。既に別のGameInstanceブループリントクラスを作成している場合はこの手順をスキップします。)
    criware_ue4_035_PALTS_create_blueprint_class.png
  2. 作成したGameInstanceブループリントクラスを[プロジェクト設定]→[マップ&モード]のGame Instance Classに設定します。(既に設定している場合はこの手順をスキップします)
    criware_ue4_035_PALTS_project_settings.png
  3. GameInstanceブループリントクラスを開きAtomComponentオブジェクトを変数に作成します。
  4. レベルブループリントエディタでAtomカテゴリ内にあるSpawnSound2DをPersist Across Level Transitionを有効にして作成します。
    criware_ue4_035_PALTS_level_blueprint.png
  5. SpawnSound2DのReturnValueでAtomComponentが出力されるため、作成したGameInstanceのAtomComponentにセットされるようノードを繋げます。
  6. ゲームを実行して音声を再生し、レベルを切り替えると音声が途切れずに再生され続けます。
注意
複数の音声を再生したい場合は、GameInstanceに格納したAtomComponentを流用して音声を再生する方法と、SpawnSound2dを何回も呼ぶ方法の2通りあります。
SpawnSound2dを複数呼ぶ方法はループ音声を再生した状態でレベルをまたぐ際に、生成されるコンポーネントをすべて管理していないと、切り替わったレベル以降で音声の停止などの制御を行うことができなくなることに注意してください。
以上の手順により、レベルをまたぐサウンド再生が可能となります。