私も少し前にこの方法で悩みました。
サウンドクラスとサウンドミックスとサウンドウェーブorサウンドキューを使用すれば本方法が可能です。
ざっくりというと下記のような機能です。
- サウンドクラスがサウンドの設定をつかさどる部分
- サウンドミックスがサウンドクラスの設定を変更できるもの
- サウンドウェーブとサウンドキューが実際に再生できるもの
(http://api.unrealengine.com/JPN/Engine/Audio/Overview/#サウンドキュー)
上記から各サウンド再生用のアセット(ウェーブやキュー)にサウンドクラスを指定し、
サウンドクラスを経由してサウンドを再生させながら、
Blueprint側からはサウンドミックス経由でサウンドクラスの値を変更するようにします。
少し手順が多いですが具体的方法は下記です。
-
下図のようにアセットのサウンドからサウンドクラスを二つ用意する(MasterClassとSoundSeClassと名付けます)。加えてサウンドミックス(DefaultSoundMixと名付ける)も一つ用意する。
-
プロジェクトの設定(エンジン→Audio→Audio)から「Default Sound Class」と「Default Media Sound Class」に手順1で作成した「MasterClass」を指定する。
-
「MasterClass」のサウンドクラスを開けて「ChildrenClasses」に「SoundSeClass」を指定。すると下図のようなノードに変わる(図は2配列エレメントとなっているが、今回は1配列エレメントでOK)
-
下図のように音量を変更したいサウンドキューorサウンドウェーブを開けて(再生する場合がキューならキューの設定 ウェーブならウェーブの設定を開けて)下図のように「Sound」の「Sound Class」に「SoundSeClass」を指定する。

-
「DefaultSoundMix」の「SoundClasses」に「SoundSeClass」を指定する。(この手順はUGameplayStaticsのソースコードを見る限り必要ないかも。。。)
-
後はBlueprint側から下記のようにノードを繋げば、問題なく動作するはずです。下図の例だとPlaySound2Dに指定したSE_Confirmが「SoundSeClass」を指定したサウンドキュー、1キーを押下することで「SoundSeClass」のボリュームを0.5にしています。Apply to Childrenはtrue設定にしています。FadeInTimeを0にすると即時に音量の変更が可能です。
もしかすると手順2でエンジンのサウンドクラスから独自のサウンドクラスに変更した結果、
対象のSE以外、他サウンドが再生されなくなったという事があるかもしれませんが、
その場合は再生されなくなったサウンドキュー又はサウンドバッファに 手順1で作成したMasterClassを指定しなおしてあげてください。
※私も初心者ですので説明の認識誤りや間違ってた場合は申し訳ないです。



