예제 #1
0
 private static void _SetSound(float size, FCMusciObject.MusicType m)
 {
     foreach (var k in mActiveMusic)
     {
         FCMusciObject fmo = k.Value;
         if (fmo.mMusicType == m)
         {
             fmo.nAudioSource.volume = fmo.GetCurValue() * size;
         }
     }
 }
예제 #2
0
        public static FCMusciObject PlaySound(string name, bool loop, FCMusciObject.MusicType type = FCMusciObject.MusicType.Sound, string group = null, float len = 0, float startTime = 0, float volume = 1)
        {
            group = string.IsNullOrEmpty(group)? name : group;
            if (mActiveMusic.ContainsKey(group))
            {
                StopSound(group);
            }

            if (!mAudioClipList.ContainsKey(name))
            {
                AudioClip ac = LoadPrefab <AudioClip>(ResConfig.MUSIC_PATH + name);
                if (ac == null)
                {
                    Debug.Log("<color=#660000>" + name + ":声音没有找到</color>");
                    return(null);
                }
                mAudioClipList[name] = ac;
            }

            FCMusciObject mo = null;

            if (mMusicPool.Count > 0)
            {
                mo = mMusicPool[0];
                mMusicPool.RemoveAt(0);
            }
            else
            {
                mo = (FCMusciObject)CreateObject(ResConfig.CC_MUSICAUDION, Engine.gameObject);
            }

            if (mo != null)
            {
                mo.gameObject.SetActive(true);
                mActiveMusic[group] = mo;
                mo.gameObject.name  = group;
                mo.SetCurValue(volume);
                mo.mMusicType = type;
                float v = 0;
                if (type == FCMusciObject.MusicType.Music)
                {
                    v = mMusciSize.x;
                }
                else
                {
                    v = mMusciSize.y;
                }
                mo.PlaySound(name, mAudioClipList[name], len, volume * v, startTime, loop);
            }
            return(mo);
        }
예제 #3
0
 public static void StopSound(string musicName = "")
 {
     if (musicName == "")
     {
         List <string> deletKeys = new List <string>(mActiveMusic.Keys);
         for (int i = 0; i < deletKeys.Count; i++)
         {
             StopSound(deletKeys[i]);
         }
     }
     else
     {
         if (mActiveMusic.ContainsKey(musicName))
         {
             FCMusciObject fmo = mActiveMusic[musicName];
             fmo.Clear();
             fmo.gameObject.SetActive(false);
             mActiveMusic.Remove(musicName);
             mMusicPool.Add(fmo);
         }
     }
 }
예제 #4
0
 public void StopSound(FCMusciObject fmo)
 {
     FEngineManager.StopSound(fmo);
 }
예제 #5
0
 public static void StopSound(FCMusciObject fmo)
 {
     StopSound(fmo.gameObject.name);
 }