【Unity6】2D脱出ゲームの作り方⑫|オプション画面でBGM・SEの音量をスライダー調整する方法

オプション画面にBGMとSEの音量を調節するSliderを追加した画像 ゲームの作り方
オプション画面にBGMとSEのSliderを追加

✅前回の記事はこちら👇

🎮 Unity6 を使った「1つのシーンで完結する2D脱出ゲーム講座」第12回です。
今回は BGM の追加方法オプション画面から BGM・SE の音量を調節できる仕組み を作っていきます

🎥制作例動画

🎵 BGMをUnityに追加する

まずはゲーム内で再生できるように BGM をプロジェクトに追加します。

ゆーちゃん
ゆーちゃん

ぼくは「BGMer」を使ってるよ!
(商用利用OK・無料)

今回の教材で使用するBGMは以下の2つ:

  • クリア後に流れる クリアBGM
  • ゲーム開始〜クリア前まで流す メインBGM

BGMManagerの作成

まずは BGM を管理するスクリプトを作ります。

オブジェクトの作成(Hierarchy)

  • 空の GameObject を作成し BGMManager と命名
  • AudioSource コンポーネントを追加
    -「Play On Awake」のチェックを外す
    -「Loop」にチェックを入れる

BGMManager.cs

using UnityEngine;

public class BGMManager : MonoBehaviour
{
private AudioSource audioSource;
public AudioClip mainBGM;
public AudioClip clearBGM;

public static BGMManager Instance;

void Awake()
{
if (Instance == null) Instance = this;
else Destroy(gameObject);

audioSource = GetComponent<AudioSource>();
}

public void PlayBGM(AudioClip clip,bool restart = false)
{
if (clip == null) return;

// すでに流れている曲と同じで restart=false なら何もしない
if (!restart && audioSource.clip == clip && audioSource.isPlaying) return;

audioSource.clip = clip;
audioSource.loop = true;
audioSource.Play();
}

public void PlayMainBGM()
{
PlayBGM(mainBGM, true);
}

// クリアした時に呼ぶ
public void PlayClearBGM()
{
PlayBGM(clearBGM, true);
}
}

インスペクターの設定

  • MainBGM → メインBGM の AudioClip
  • ClearBGM → クリアBGM の AudioClip

スタート時に BGM を再生する

BackgroundManager.cs の GameStart() 内に追加

BGMManager.Instance.PlayMainBGM();

オプションボタンと画面の作成(UI)

ゲーム中、常時表示されるUI画面(アイテムボックス横)にオプションボタンを追加します
オプション画面には、ゲーム中に音量を調節できるようにする UI を作ります。

▼ Hierarchy 構成例

GameUI
  ├─ ItemBox
  └─ OptionButton

OptionPanel(背景より手前に表示)
    ├─ BGMSlider
    |  └─BGM(テキスト)
    ├─ SESlider
    |  └─ SE(テキスト)
    └─ CloseOptionButton

✔ OptionPanel のポイント

  • サイズ:800×600(ゲーム画面全体を覆う)
  • 背景色:半透明の黒や白にしてメイン画面を隠す
  • 非表示スタート(SetActive false)
【Unity6】2D脱出ゲームの作り方⑫|オプション画面にBGMとSEの音量を調節するSliderを追加した画像

OptionManager の作成

オプション画面の開閉を制御します。

OptionManager.cs

using UnityEngine;

public class OptionManager : MonoBehaviour
{
public GameObject optionPanel;

public void OpenOption()
{
  optionPanel.SetActive(true);
 Time.timeScale = 0f;
 }

public void CloseOption()
{
 optionPanel.SetActive(false);
 Time.timeScale = 1f;
}
}

インスペクターの設定

OptionButtonにスクリプトをアタッチ、OptionPanel→ 該当オブジェクトを指定

  • OptionButton:→ OnClick に OpenOption()
  • CloseOptionButton:→ OnClick に CloseOption()

スライダーで BGM / SE の音量を調整する

BGMManager と SEManager にスライダー連動機能を追加します。

BGMManager.cs に追加

using UnityEngine.UI;

public Slider volumeSlider;

Start() に以下を追加

void Start()
{
if (volumeSlider != null)
{
volumeSlider.value = audioSource.volume;
volumeSlider.onValueChanged.AddListener(SetVolume);
}
}

音量変更メソッド

public void SetVolume(float value)
{
audioSource.volume = value;
}

▼ SEManager.cs も同様

※ただし audioSource → seSource に変更

public Slider volumeSlider;

void Start()
{
if (volumeSlider != null)
{
volumeSlider.value = seSource.volume;
volumeSlider.onValueChanged.AddListener(SetVolume);
}
}

public void SetVolume(float value)
{
seSource.volume = value;
}

インスペクター設定

  • BGMSlider → BGMManager の volumeSlider にアタッチ
  • SESlider → SEManager の volumeSlider にアタッチ

動作確認チェック

  • ゲーム開始時に BGM が流れる
  • OptionButton からオプション画面が開く
  • BGM / SE スライダーが音量に反映される
  • Close ボタンで再びゲームに戻る

まとめ

今回は オプション画面の作成
BGM / SE の音量調整スライダーの実装 を解説しました。

✅次回は、ゲーム開始時等に画面を徐々にフェードインさせる機能を実装します👇

コメント

タイトルとURLをコピーしました