シンプルなオーディオ制御クラス

このページはVersion 5.6.1f1 Personalを対象としています。

更新履歴

参考URL

概要

このページでは自作のシンプルなオーディオ管理クラスについてまとめました。 例えばSEを鳴らしたいときは、AudioController.playSE(拡張子を除いたSEファイル名);のように呼び出します。 オーディオファイルのバッファリング等はせず、鳴らすたびにResourcesから読み込んでいます。 容量の大きなBGMファイルを鳴らしたりすると、鳴らす瞬間カクつくかもしれません。

使い方

コード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioController : MonoBehaviour {

    static AudioSource audSE;
    static AudioSource audBGM;
    static string BGMFileName = "";
    static bool BGMOnce = false;
    static float BGMTime = 0.0f;

    // Use this for initialization
    void Start () {
        audSE = GetComponents<AudioSource>()[0];
        audBGM = GetComponents<AudioSource>()[1];
        setSEVolume(0.5f);
        setBGMVolume(0.5f);
    }
    
    // Update is called once per frame
    void Update () {
        transform.position = Camera.main.transform.position;

        if(BGMOnce && (!audBGM.isPlaying))
        {
            BGMOnce = false;
            audBGM.Stop();
            if (BGMFileName == "")
                return;
            AudioClip ac = Resources.Load("BGM/" + BGMFileName) as AudioClip;
            audBGM.clip = ac;
            audBGM.loop = true;
            audBGM.time = BGMTime;
            audBGM.Play();
        }
    }

    public static void setSEVolume(float Volume)
    {
        audSE.volume = Volume;
    }

    public static void playSE(string FileName)
    {
        if (FileName == "")
            return;

        AudioClip ac = Resources.Load("SE/" + FileName) as AudioClip;
        audSE.PlayOneShot(ac);
    }

    public static void setBGMVolume(float Volume)
    {
        audBGM.volume = Volume;
    }

    public static void playBGM(string FileName)
    {
        BGMFileName = FileName;
        audBGM.Stop();
        if (BGMFileName == "")
            return;
        AudioClip ac = Resources.Load("BGM/" + BGMFileName) as AudioClip;
        audBGM.clip = ac;
        audBGM.loop = true;
        audBGM.time = 0.0f;
        audBGM.Play();
    }

    public static void playBGMOnce(string FileName)
    {
        if (BGMOnce || FileName == "")
            return;
        BGMOnce = true;
        BGMTime = audBGM.time;
        audBGM.Stop();
        AudioClip ac = Resources.Load("BGM/" + FileName) as AudioClip;
        audBGM.clip = ac;
        audBGM.loop = false;
        audBGM.time = 0.0f;
        audBGM.Play();
    }
}

戻る

inserted by FC2 system