Advertisement
Rhutos

BGM Class

Dec 7th, 2014
649
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.06 KB | None | 0 0
  1. //----------------------------------------
  2. //  Plays background music &
  3. //  manages loop points + fading
  4. //----------------------------------------
  5. using UnityEngine;
  6.  
  7. namespace Dark_Earth
  8. {
  9.     public class BGM : Singleton<BGM>
  10.     {
  11.         protected BGM () {}
  12.  
  13.         private const string FILE_EXTENSION = ".ogg";
  14.  
  15.         private AudioSource m_pMusic;
  16.         private string m_sBGM_File = "";
  17.         private float m_fLoop_From, m_fLoop_To, m_fFade_Time, m_fFade_Volume;
  18.         private float m_fVolume = 1.00f;
  19.         bool m_bFading;
  20.  
  21.         //----------------------------------------
  22.         //  Allocate Memory
  23.         //----------------------------------------
  24.         void Awake ()
  25.         {
  26.             m_pMusic = gameObject.AddComponent ("AudioSource") as AudioSource;
  27.         }
  28.  
  29.         //----------------------------------------
  30.         //  Loop points + fading
  31.         //----------------------------------------
  32.         void Update ()
  33.         {
  34.             if (m_pMusic == null)
  35.                 return;
  36.             if (m_bFading == true)
  37.             {
  38.                 m_fFade_Volume -= ((1 / m_fFade_Time) * Time.deltaTime);
  39.                 if (m_fFade_Volume <= 0)
  40.                     Stop ();
  41.                 else
  42.                     m_pMusic.volume = (m_fVolume * m_fFade_Volume);
  43.             }
  44.             else
  45.                 m_pMusic.volume = m_fVolume;
  46.             if (m_pMusic.loop == true)
  47.             {
  48.                 if (m_pMusic.time >= m_fLoop_To)
  49.                     m_pMusic.time = m_fLoop_From;
  50.             }
  51.         }
  52.  
  53.         //----------------------------------------
  54.         //  Play BGM
  55.         //----------------------------------------
  56.         public void Play (string sFile, bool bLoop, float fLoop_From, float fLoop_To)
  57.         {
  58.             string sPath = (Application.dataPath + "/Resources/BGM/" + sFile + FILE_EXTENSION);
  59.             if (System.IO.File.Exists (sPath) == false)
  60.                 return;
  61.             if (sFile == m_sBGM_File)
  62.                 return;
  63.  
  64.             m_sBGM_File = sFile;
  65.             m_bFading = false;
  66.             if (m_pMusic.clip != null)
  67.                 Resources.UnloadAsset (m_pMusic.clip);
  68.             m_pMusic.clip = Resources.Load ("BGM/"+sFile) as AudioClip;
  69.             m_pMusic.loop = bLoop;
  70.             if (fLoop_To == 0.00f)
  71.                 fLoop_To = m_pMusic.clip.length;
  72.             m_fLoop_From = fLoop_From;
  73.             m_fLoop_To = fLoop_To;
  74.  
  75.             m_pMusic.Play ();
  76.         }
  77.         public void Play (string sFile, bool bLoop)
  78.         {
  79.             Play (sFile, bLoop, 0.00f, 0.00f);
  80.         }
  81.         public void Play (string sFile)
  82.         {
  83.             Play (sFile, true);
  84.         }
  85.  
  86.         //----------------------------------------
  87.         //  Fading
  88.         //----------------------------------------
  89.         public void Fade_Out (float fTime)
  90.         {
  91.             if (m_sBGM_File == "")
  92.                 return;
  93.  
  94.             m_bFading = true;
  95.             m_fFade_Time = fTime;
  96.             m_fFade_Volume = 1.00f;
  97.         }
  98.  
  99.         //----------------------------------------
  100.         //  BGM Stop
  101.         //----------------------------------------
  102.         public void Stop ()
  103.         {
  104.             if (m_sBGM_File == "")
  105.                 return;
  106.             m_pMusic.Stop ();
  107.             m_sBGM_File = "";
  108.             m_bFading = false;
  109.         }
  110.  
  111.         //----------------------------------------
  112.         //  BGM Pause
  113.         //----------------------------------------
  114.         public void Pause ()
  115.         {
  116.             if (m_sBGM_File == "" || m_bFading == true)
  117.                 return;
  118.             m_pMusic.Pause ();
  119.  
  120.         }
  121.  
  122.         public int Volume
  123.         {
  124.             set { m_fVolume = ((float)value / 100); }
  125.             get { return ((int)m_fVolume * 100); }
  126.         }
  127.     }
  128. }
  129.  
  130. //@Copyright by Rhutos, Rising Games
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement