CSoundEffectMgr

AudioSourceを複数持ち、SEのグループ化、プライオリティ、同時発生数制限等を行います。

デフォルトの同時発生数制限は、このようになっています。

  • 2D音声 4音

  • 3D音声 8音

また、グループ毎に同時発生数制限を個別に設定可能になっています。

SEのこれら設定を行う方法は、こちらを 参照 ください。

AudioSourceを管理しており、音声を発生させるためにプログラマが別途AudioSourceを作成する必要がなくなっています。

マネージャを組み込む方法

CSoundEffectMgrを使うには、次のようにマネージャをゲームオブジェクトに対して、Addする必要があります。

public class CMainSystem : CMainSystemBase {
   //==========================================================================
    /*!Awake
    * @brief  Unity Callback
    */
    new void Awake() {
        base.Awake();

        if (m_instance != null) {
            Debug.LogError("already exist CMainSystem");
            return;
        }
        m_instance = this;

        // Add Component
        gameObject.AddComponent<CInput>();
        if (KsSoftConfig.UseAssetBundle) {
               gameObject.AddComponent<CAssetBundleMgr>();
           }
        gameObject.AddComponent<CSpriteFontMgr>();
        gameObject.AddComponent<CTextureResourceMgr>();
        gameObject.AddComponent<CWindowMgr>();
        gameObject.AddComponent<CBgmResourceMgr>();
        gameObject.AddComponent<CSeResourceMgr>();
        gameObject.AddComponent<CSoundEffectMgr>();

        addManager(new CMessageDataSheetMgr(Utility.getSystemLocale()));
    }

指定されたBGMを再生します。 もし、指定されたアセットバンドルが読み込まれていないときは、読み込み終わった後に自動的に再生を開始します。 明示的に読み込みを待ちたいときは、cBgmResource.isLoaded()が、trueを返すのを待ってから、再生してください。

CBgmResourceを直接取得するには、次のように記述します。

IEnumerator load(uint id) {
 CBgmResource cBgmResource = CBgmResourceMgr.Instance.reference(id);

 if (cBgmResource == null) {
     // error!!
     yield break;
 }
 while (!cBgmResource.isLoaded()) {
     yield return 0;
 }
 CSoundEffectMgr.Instance.playBgm(cBgmResource);
};

指定されたSEを2D音声として再生します。 CSoundEffectは、次の方法で取得可能です。

CSeResource   m_cSR;
         :
CSoundEffect  cSE = m_cSR.find(id);

指定されたSEを2D音声として再生します。

指定されたSEを3D音声として再生します。

マネージャのインスタンスを取得します。

CSeResourceを管理するコンテナになっています。

CAssetBundleMgr経由で、アセットバンドルをダウンロードしてきた後、読み込んだ音声データを管理します。

SEリソースを取得する。取得できるアセットは、こちら でコンバートしたものです。

CSoundEffectを取得します。

マネージャのインスタンスを取得します。

アセットバンドル化されたSEを使える状態にして保持しています。

CSeResource一つに、複数のSEがまとまった形で入っています。

IWinSoundEffectインターフェースを持ち、CWindowMgrに登録することが可能です。

実際に、SEを鳴らすには、CSoundEffectMgr経由で行います。

SEを取得します。

SEを再生します。

アセットバンドルが読み込み終わっているかどうか調べます。

trueの時、読み込みが完了しており、使用可能な状態になっています。

CBgmResourceを管理するコンテナになっています。

CAssetBundleMgr経由で、アセットバンドルをダウンロードしてきた後、読み込んだBGMデータを管理します。

実際に、BGMを鳴らすには、CSoundEffectMgr経由で行います。

BGMリソースを取得します。取得できるアセットは、こちら でコンバートしたものです。

Resourcesフォルダの下に次のような形でファイルを置いておくと読み込むことができます。


Assets/Resources/001_000_000000.mp3 Assets/Resources/001_000_000000.intro.mp3

マネージャのインスタンスを取得します。

アセットバンドル化されたBGMを使える状態にして保持しています。

CBgmResource内に、イントロ部分とループ部分の音声データを持っています。

実際に、BGMを鳴らすには、CSoundEffectMgr経由で行います。

ループ部分のクリップ

イントロ部分のクリップ

アセットバンドルが読み込み終わっているかどうか調べます。

trueの時、読み込みが完了しており、使用可能な状態になっています。