Skip to content

Instantly share code, notes, and snippets.

@yukpiz
Last active July 8, 2016 09:56
Show Gist options
  • Save yukpiz/d533fad5e0a277e77293b557c0f31049 to your computer and use it in GitHub Desktop.
Save yukpiz/d533fad5e0a277e77293b557c0f31049 to your computer and use it in GitHub Desktop.

ADX2 LEを使った全シーン共通のBGM再生

音声データを用意する

ここでは割愛します。
以下を参考にしてCRI Atom Craftで音声データを取り込み、キューシートバイナリを生成してください。

Unity側設定

この辺もチュートリアル通りなので、細かくは割愛して、ざっくりの流れだけ書きます。

  1. Create Emptyして、名前をSound ADX2(なんでもいい)にします。
  2. Sound ADX2の子要素にCriWareErrorHandler, CriWareLibraryInitializer, CRIWAREを配置します。

スクリプトを作成

  • ゲームオブジェクトでサウンド再生を扱った場合、シーンを跨ぐとBGM再生が止まってしまう
  • DontDestroyOnLoadを使ってゲームオブジェクトが破棄されないようにする
  • 生成元のシーンが呼ばれた時に、同じゲームオブジェクトが再生成されてしまうのを防ぐ
    参考 - DontDestroyOnLoadの複製を防ぐ
using UnityEngine;

public class SoundManager : MonoBehaviour
{
    private string cueSheetName = "キューシート名";
    private string cueName = "キュー名";
    
    private CriAtomSource bgm;
    //DontDestroyOnLoadによる無限増殖を防ぎます
    private static bool created = false;
    
    public void Awake()
    {
        if (!created) {
            //別シーンに移動しても自身を破棄させない
            DontDestroyOnLoad(this);
            
            //ゲームオブジェクトが生成された時のみBGMの再生を開始
            bgm = gameObject.AddComponent<CriAtomSource>();
            bgm.cueSheet = cueSheetName;
            bgm.Play(cueName);
            created = true;
        } else {
            //複製されたオブジェクトは無条件に破棄する
            Destroy(this.gameObject);
        }
    }
}

上記スクリプトを前項で作成したSound ADX2に設定すると、
全シーンで途切れずにBGMが再生されるようになります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment