【Unity】シーンまたぎのマネージャを作る

皆さん、こんにちは。ぶんじゃくです。

しっかり秋らしさが感じられ、また冬の到来をひしひしと感じる今日この頃、いかがお過ごしでしょうか。

さて、今回はUnityで簡単なManagerを作ってみたいと思います。

Unityではシーンを移動しても引き続き残っていてほしいGameObjectがあったりしませんか。

Managerはゲーム全体で管理されるもので、例えばSoundManager(音)等があったりします。

こういうものはシーンごとに作り直すのも面倒ですよね。

さて、また例のごとくサンプルコードから入ります。

しかしその前に、シーンにGameObjectを1つ用意し、

そのGameObjectに以下のスクリプトをアタッチするようにしてください。

サンプルコード

public class SoundManager : MonoBehaviour
{
    // SE
    public AudioClip sampleSE;

    // BGM
    public AudioClip sampleBGM;

    public AudioSource audioSourceSE;
    public AudioSource audioSourceBGM;

    public static SoundManager Instance
    {
        get; private set;
    }

    void Awake()
    {
        if (Instance != null)
        {
            Destroy(gameObject);
            return;
        }

        Instance = this;
        DontDestroyOnLoad(gameObject);
    }

    public void PlaySampleSE()
    {
        audioSourceSE.PlayOneShot(sampleSE);
    }

    public void PlaySampleBGM()
    {
        audioSourceSE.clip = sampleBGM;
        audioSourceSE.Play();
    }
}
~略~
using UnityEngine.SceneManagement;
~略~

    public void OnClickButton()
    {
        SoundManager.PlaySampleSE();
        SoundManager.PlaySampleBGM();
    }

最初のコードがSoundManagerにあたり、次のコードが実際の呼び出しになります。

AudioClipには任意の音声データをアタッチしておくのを忘れないでください。

これでシーンが変わっても、SoundManagerから任意の音を鳴らすことができます。

何かの参考になれば幸いです。

それでは今回はこの辺で。さようなら。