忍者ブログ

非現実的な話

ゲーム、UnrealEngine4などの話題を取り扱います。取り扱う内容は個人の範囲で調べたものなのでご利用は自己責任でお願いします。

【UE4】音を再生する件(PersistentLevelを跨いで再生編)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

1. 無題

4.14からOpenLevelでレベル遷移した場合でもAudioComponentを鳴らし続けられるフラグがSpawn Sound 2Dに追加されました。GC対象にならないようにGameInsntanceなどに参照は持たせる必要はあります。

ただいまコメントを受けつけておりません。

【UE4】音を再生する件(PersistentLevelを跨いで再生編)

音を再生する件に関して2日に渡り調べてきたが、最終的にタイトルに書いたことができるかを調べてみた。

結論。できない。
現時点ではどうやらEngine側のソースを変更しない限りできないようだ。

-----------------------------------------------------------------------------
以下、調べてみた内容。

【公式ドキュメント】
AmbientSoundActor UsersGuide

音を再生する仕組みについては公式ドキュメントに書かれているように、基本的にActorやComponentとして再生する音源をLevel上に配置する。・・・なるほど、無理じゃん。

原則としてPersistentLeveが切り替わる際、切替前のPersistentLevelに置かれているActorやComponentは全て破棄される。切替前のPersistentLevel(以降、Map1)から音源Aを再生し、切替後のPersistentLevel(以降、Map2)に移行した場合、Map1で定義した音源Aは破棄され、Map2への継続した再生はできない。

う~ん。無理っぽいぞ・・・
いや、調べるだけ調べてみよう。


【Case1】
 Map1,及びMap2に同一GameModeを設定し、GameModeのBlueprintから音源を再生する。
 [結果]
 できない。Level生成時にGameModeも生成されるので、GameModeで生成した音源もLevel切替時に破棄される。というか、GameModeはWorldSetting.hに設定されるので、PersistentLevelでの継承はできない。


【Case2】
 Widgetから音を再生する(PlaySound)。
 [結果]
 できない。WidgetはLevel内に存在するもので、Level切替時に破棄される。


【Case3】
 GameInstanceで音源を再生する。
 [結果]
 できない。GameInstanceはComponetを設定できない。


【Case4】
 C++側から無理やり再生してみる。

---------------------------------------------------------------------------
引数で音源のソースをBlueprintから指定して再生
---------------------------------------------------------------------------
 void PlayMySound ( USoundCue * sound )
 {
     FAudioDevice* const AudioDevice = GEngine->GetAudioDevice();
     if(AudioDevice)
     {
         FActiveSound NewActiveSound;
         NewActiveSound.Sound = sound;
         NewActiveSound.bIsUISound = true;
         NewActiveSound.UserIndex = 0;
 
         AudioDevice->AddNewActiveSound(NewActiveSound);
     }
 }
---------------------------------------------------------------------------

 [結果]
 できない。Level切替時にWorld情報も切り替わるのでダメなようだ。


残念ながらAudioの仕組みとしてできないっぽいなぁ。
「Level跨ぎで音源を再生する」なんて特殊っちゃー特殊だが。
回避策としては、PersistentLevel単位で分けるのではなく、SubLevel毎に作る設計をしなくちゃならないようだ。やむなし。

コメント

1. 無題

4.14からOpenLevelでレベル遷移した場合でもAudioComponentを鳴らし続けられるフラグがSpawn Sound 2Dに追加されました。GC対象にならないようにGameInsntanceなどに参照は持たせる必要はあります。

プロフィール

UnrealEngine4について調べる。
ゲームはそんなに得意ではない。

ブログ内検索

カレンダー

08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

リンク

  • [PR]
    PR