UE4 音量調節のオプションメニューを作る
「Unreal Engine 4 (UE4) Advent Calender 2018」の7日目の記事です。
今回の記事はゲーム内の音量を Widget で制御してみようというものです。
オプション画面とかをしっかりと作りたいのであれば、
このあたりは抑えておきたいですね。
ではやっていきましょう。
準備
今回は UE4 4.21.0 を使用しています。
(4.21.1 が来てるだろって?その前に書き終わったんだもの!)
First Person のテンプレートを使用し、
Starter Contents 有りでプロジェクトを作成します。
プロジェクトが作成できました。
また、今回は BGM を予めインポートしておきました。
こちらのアセットを使用しました。
Sound Class を作成する
音量調節するものを細分化するため、
Sound Class を使用します。
コンテンツブラウザから右クリック
Sound→Sound Class を選択します。
このような感じに名前をつけました。
作成した SC_Master の子として SC_BGM と SC_SE を作成します。
実際にはもっと複雑になるかと思いますが、
説明が面倒くさいので2つのみにします。
(Master→Voice→アナウンス用/キャラクター用とかになると思う)
Sound Class の細かい使用方法については
こちらを参考にしてください。
使用する Sound Cue に Sound Class を割り当てる
作成した Sound Class を Sound Cue に適応していきます。
先程紹介したアセットの中に入っているものを
BGMとして使用します。
その中の Sound Cue を開きます。
BGM の Cue には SC_BGM を割り当てています。
SE に使用するのは First Person テンプレートの銃の発射音です。
SE は Sound Cue になっていなかったので、
右クリックから Sound Cue にしておきます。
BGM と同じように Sound Cue に Sound Class を適応します。
※一応 Wave にも Sound Class を設定することもできますが、
Wave をそのまま使うことはあまりないため Cue にしました。
ThirdPersonBP/Blueprints/FirstPersonCharacterを開き、
発射音を再生している処理を Wave 再生から Cue 再生のものに差し替えておきます。
Sound Mix を作成する
後ほど使用する Sound Mix を作成します。
コンテンツブラウザを右クリックから
Sound→Sound Mix を選択します。
適当に Master と名前をつけておきます。
作成した Sound Mix を開き、
使用する3種類の Sound Class を適応します。
BGM を再生する
準備がある程度整ったので、BGM の再生処理を書きます。
レベルブループリントを開いてください。
Event Begin Play から Play Sound 2D に処理を通し、
Sound には Sound Class(SC_BGM) を適応した Sound Cue を割り当てます。
プレイすると BGM が鳴っているのが確認できると思います。
Widget を作成する
音量調整を行うための Widget を作成します。
コンテンツブラウザを右クリックから
User Interface→Widget Blueprint を選択します。
このように名前をつけました。
作成した Widget を開き、このように Text と Slider を並べます。
(背景は Background Blur と Border でコネコネしてます)
デザイナー画面での編集はひと段落したので、
グラフ画面に切り替えます。
ここでいくつかの処理を作成します。
基本的には Slider の値が変動した場合、
その値を変数に格納→Widget を取り外す際に更新といった処理になります。
On Value Changed のイベントは Slider のイベントボタンから出すことができます。
Sound Mix と Sound Class の設定もここでやっています。
MasterVolume などの変数は初期値を0.5にしています。
細かい画像
Slider のバインドを作成する
再びデザイナー画面に切り替えます。
Slider の Value のバインドを作成します。
先程作成していた変数をそのまま Return Value に繋ぎます。
BGM と SE も同様にバインドを作成しておきます。
Widget を取り付ける処理を書く
レベルブループリントを開き処理を追加します。
Event Begin Play で Widget の生成を行い、
あとは付けたり外したりしてるだけですね。
確認してみる
Slider をずらし Widget を取り外すと
音量が変化していると思います。
明日は T_Sumisaki さんの記事です。