【Unity6】2D脱出ゲームの作り方⑪|効果音を管理するSEマネージャーを作ろう

Unityに効果音ファイルを追加した画像 ゲームの作り方
Unityに効果音ファイルを追加

✅前回の記事はこちら👇

🎮 Unity6 を使った「1シーン完結の2D脱出ゲーム講座」第11回です。
今回は、SEマネージャーを作成し、ゲーム中の効果音を一括管理する方法を解説します。

アイテムを拾ったとき、ギミックが解除されたとき、水道の水を流したり止めたりしたとき……
ゲームの演出には欠かせない効果音をまとめて制御できるようになります!

🎥制作例動画👇

SE(効果音)をUnityに追加する

まずは効果音ファイルを用意します。

ゆーちゃん
ゆーちゃん

ぼくがいつも使っているのは「効果音ラボ」(商用利用OK・無料)

ダウンロードした音源は、そのまま Unity のプロジェクトウィンドウへドラッグ&ドロップすればOK。

【Unity6】2D脱出ゲームの作り方⑪|Unityに効果音ファイルを追加した画像

今回使用するタイミングは以下の通り👇

  • 扉を開く / 閉じる
  • アイテムを取得
  • ギミック解除
  • 水を流す
  • 水を止める

SEManager.scを作成する

using UnityEngine;

public class SEManager : MonoBehaviour
{
public AudioSource seSource;

public AudioClip itemGetSE;
public AudioClip unLockSE;
public AudioClip openSE;
public AudioClip waterFlowSE;
public AudioClip stopWaterSE;

public static SEManager Instance;

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

// 扉の開閉
public void PlayOpenSE()
{
seSource.PlayOneShot(openSE);
}

// アイテム取得
public void PlayItemGetSE()
{
 seSource.PlayOneShot(itemGetSE);
}

// ギミック解除
public void PlayUnLockSE()
{
seSource.PlayOneShot(unLockSE);
}

// 水を出す(ループ)
public void StartWaterFlowSE()
{
seSource.clip = waterFlowSE;
seSource.Play();
}

public void WaterStop()
{
seSource.Stop();
}

// 蛇口を閉める音
public void StopWaterSE()
{
seSource.PlayOneShot(stopWaterSE);
}
}

🔍 ポイント
水を流す効果音だけループ再生にしています。

ヒエラルキー・インスペクター設定

① SEManager オブジェクトを作成

  • 空のオブジェクトを作成
  • 名前を SEManager にする
  • AudioSource コンポーネントを追加
  • 先ほどの SEManager.sc をアタッチ

② インスペクターで設定

  • SeSource に自分自身の AudioSource をセット
  • 各種 AudioClip をアタッチ
  • Play On Awake(ゲーム開始時に再生) のチェックを外す

他スクリプトから SEManager を呼び出す

● 扉を開閉するとき

ToggleObject.sc → Toggle() に追加

SEManager.Instance.PlayOpenSE();

✅ToggleObject.scについてはこちら👇
④|2段階拡大とクリックでオブジェクトを動かす共通スクリプト

● アイテムを拾ったとき

ItemPickup.sc → OnClick() に追加

SEManager.Instance.PlayItemGetSE();

✅ItemPickup.scについてはこちら👇
⑦|アイテムボックスを管理するスクリプトを作る

● ギミック解除(木の棒・ハンドルなど)

StickRetrieve.sc / FaucetController.sc に追加

SEManager.Instance.PlayUnLockSE();

✅StickRetrieve.scについてはこちら👇
⑨|選択したアイテムを使ったギミックの実装①(木の棒を使う)

● 蛇口から水を流す

FaucetController.sc → StartWaterFlow() に追加

SEManager.Instance.WaterFlowSE();

● 水を止める

FaucetController.sc → StopWaterFlow() に追記

SEManager.Instance.WaterStop();
SEManager.Instance.StopWaterSE();

✅FaucetController.scについてはこちら👇
⑩|選択したアイテムを使ったギミックの実装②(水道の水を流す)

動作確認チェック

✔ 自販機の取り出し口を開閉 → SE再生
✔ アイテム取得 → SE再生
✔ 木の棒・ハンドルによるギミック解除 → SE再生
✔ 蛇口から水を出す → ループ再生
✔ 水を止める → 効果音を再生して終了

まとめ

今回は、効果音を一括管理する SE マネージャーを作り、
他のスクリプトからいつでも呼び出せる仕組みを実装しました!

次回は、オプション画面を追加し、 BGM・SE の音量をスライダーで調整する方法を解説します。

コメント

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