Exemplo n.º 1
0
        private IEnumerator AudioSourceLifeCycleOpertaion()
        {
            while (m_RunASLCController)
            {
                yield return(new WaitForSeconds(lifeCycleCheckDuration));

                for (int audioSourceIndex = m_NumberOfPreloadedAudio; audioSourceIndex < m_AudioSourceList.Count; audioSourceIndex++)
                {
                    if (m_AudioSourceList.Count > m_NumberOfPreloadedAudio &&
                        Time.time > m_AudioSourceList[audioSourceIndex].autoDestructTime)
                    {
                        if (m_AudioSourceList[audioSourceIndex].audioSourceReference.loop &&
                            IsMusicEnabled())
                        {
                            AudioSourceAttribute t_ModifiedAudioSourceAttribute = m_AudioSourceList[audioSourceIndex];
                            t_ModifiedAudioSourceAttribute.autoDestructTime = Time.time + t_ModifiedAudioSourceAttribute.audioSourceReference.clip.length + (lifeCycleCheckDuration / 3.0f);
                            m_AudioSourceList[audioSourceIndex]             = t_ModifiedAudioSourceAttribute;
                        }
                        else
                        {
                            Destroy(m_AudioSourceList[audioSourceIndex].audioSourceObject);
                            m_AudioSourceList.RemoveAt(audioSourceIndex);
                            m_AudioSourceList.TrimExcess();
                            break;
                        }
                    }
                }
            }

            StopCoroutine(AudioSourceLifeCycleOpertaion());
        }
Exemplo n.º 2
0
    internal static AudioSource GetAudioSource(ISkill skill)
    {
        // TODO: закэшировать

        var asName = AudioSourceAttribute.GetAudioSourceName(skill);

        if (asName == null)
        {
            return(null);
        }

        return(FindObjectsOfType <AudioSource>().FirstOrDefault(aS => aS.name == asName));
    }
Exemplo n.º 3
0
        private void LoadDefaultAudioSource()
        {
            List <int> m_ListOfPreloadedAudioSourceIndex = new List <int>();

            for (int index = 0; index < audio.Length; index++)
            {
                if (audio[index].usePreloadedAudioSource)
                {
                    m_ListOfPreloadedAudioSourceIndex.Add(index);
                }
            }

            int m_PreloadedAudioSourceIndex = 0;

            m_NumberOfPreloadedAudio = m_ListOfPreloadedAudioSourceIndex.Count;

            for (int index = 0; index < m_NumberOfPreloadedAudio; index++)
            {
                GameObject m_NewAudioSource = new GameObject();
                m_NewAudioSource.name             = "Audio Source (" + m_AudioSourceList.Count + ")";
                m_NewAudioSource.transform.parent = transform;
                m_NewAudioSource.AddComponent <AudioSource>();

                //Adding to AudioSource List
                AudioSourceAttribute m_NewAudioSourceAttribute = new AudioSourceAttribute();
                m_NewAudioSourceAttribute.audioSourceObject                = m_NewAudioSource;
                m_NewAudioSourceAttribute.audioSourceReference             = m_NewAudioSource.GetComponent <AudioSource>();
                m_NewAudioSourceAttribute.audioSourceReference.playOnAwake = false;

                if (m_PreloadedAudioSourceIndex < m_ListOfPreloadedAudioSourceIndex.Count)
                {
                    m_NewAudioSourceAttribute.audioSourceReference.clip   = audio[m_ListOfPreloadedAudioSourceIndex[m_PreloadedAudioSourceIndex]].audioClip;
                    m_NewAudioSourceAttribute.audioSourceReference.volume = audio[m_ListOfPreloadedAudioSourceIndex[m_PreloadedAudioSourceIndex]].volumn;
                    m_PreloadedAudioSourceIndex++;
                }

                m_AudioSourceList.Add(m_NewAudioSourceAttribute);
            }
        }
Exemplo n.º 4
0
        public void DisableMusic()
        {
            PlayerPrefs.SetInt(IS_GAME_MUSIC_DISABLED, 1);

            int m_AudioIndex = -1;

            for (int audioSourceIndex = 0; audioSourceIndex < m_AudioSourceList.Count; audioSourceIndex++)
            {
                m_AudioIndex = GetAudioClipIndex(m_AudioSourceList[audioSourceIndex].audioSourceReference.clip.name);

                if (m_AudioIndex != -1 && audio[m_AudioIndex].IsMusic)
                {
                    m_AudioSourceList[audioSourceIndex].audioSourceReference.Stop();

                    if (!audio[m_AudioIndex].usePreloadedAudioSource)
                    {
                        AudioSourceAttribute t_ModifiedAudioSourceAttribute = m_AudioSourceList[audioSourceIndex];
                        t_ModifiedAudioSourceAttribute.autoDestructTime = Time.time;
                        m_AudioSourceList[audioSourceIndex]             = t_ModifiedAudioSourceAttribute;
                    }
                }
            }
        }
Exemplo n.º 5
0
        public void PlaySound(string name, bool loop)
        {
            //Debug.Log ("##Sound " + (loop ? "(Loop) " : " ") + name);

            if (IsPlayingSoundAllowed(name))
            {
                bool m_FoundFreeAudioSource = false;
                int  m_FreeAudioSourceIndex = -1;

                int m_AudioClipIndex = -1;

                //Find AudioClip
                for (int audioClipIndex = 0; audioClipIndex < audio.Length; audioClipIndex++)
                {
                    if (name == audio[audioClipIndex].name)
                    {
                        m_AudioClipIndex = audioClipIndex;
                        break;
                    }
                }

                if (m_AudioClipIndex == -1)
                {
                    Debug.LogError(name + " : The following sound clip wasn't added to AudioManager, please add it to audio manager");
                }
                else
                {
                    //Find Free Audio Source
                    if (audio[m_AudioClipIndex].usePreloadedAudioSource)
                    {
                        //If Preloaded Audio Source
                        for (int audioSourceIndex = 0; audioSourceIndex < m_AudioSourceList.Count; audioSourceIndex++)
                        {
                            if (m_AudioSourceList[audioSourceIndex].audioSourceReference.clip == audio[m_AudioClipIndex].audioClip)
                            {
                                m_AudioSourceList[audioSourceIndex].audioSourceReference.loop = loop;
                                m_AudioSourceList[audioSourceIndex].audioSourceReference.Play();
                                break;
                            }
                        }
                    }
                    else
                    {
                        //if Not Preloaded Audio Source
                        for (int audioSourceIndex = m_NumberOfPreloadedAudio; audioSourceIndex < m_AudioSourceList.Count; audioSourceIndex++)
                        {
                            if (!m_AudioSourceList[audioSourceIndex].audioSourceReference.isPlaying)
                            {
                                m_FreeAudioSourceIndex = audioSourceIndex;
                                m_FoundFreeAudioSource = true;
                                break;
                            }
                        }

                        if (!m_FoundFreeAudioSource)
                        {
                            GameObject m_NewAudioSource = new GameObject();
                            m_NewAudioSource.name             = "Audio Source (" + m_AudioSourceList.Count + ")";
                            m_NewAudioSource.transform.parent = transform;
                            m_NewAudioSource.AddComponent <AudioSource>();

                            //Adding to AudioSource List
                            AudioSourceAttribute m_NewAudioSourceAttribute = new AudioSourceAttribute();
                            m_NewAudioSourceAttribute.audioSourceObject                = m_NewAudioSource;
                            m_NewAudioSourceAttribute.audioSourceReference             = m_NewAudioSource.GetComponent <AudioSource>();
                            m_NewAudioSourceAttribute.audioSourceReference.playOnAwake = false;

                            m_AudioSourceList.Add(m_NewAudioSourceAttribute);
                            m_FreeAudioSourceIndex = m_AudioSourceList.Count - 1;
                        }

                        AudioSourceAttribute m_ModifiedSourceAttribute = new AudioSourceAttribute();
                        m_ModifiedSourceAttribute = m_AudioSourceList[m_FreeAudioSourceIndex];
                        m_ModifiedSourceAttribute.autoDestructTime = Time.time + audio[m_AudioClipIndex].audioClip.length + (lifeCycleCheckDuration / 3.0f);
                        m_AudioSourceList[m_FreeAudioSourceIndex]  = m_ModifiedSourceAttribute;

                        m_AudioSourceList[m_FreeAudioSourceIndex].audioSourceReference.clip   = audio[m_AudioClipIndex].audioClip;
                        m_AudioSourceList[m_FreeAudioSourceIndex].audioSourceReference.volume = audio[m_AudioClipIndex].volumn;
                        if (loop)
                        {
                            m_AudioSourceList[m_FreeAudioSourceIndex].audioSourceReference.loop = loop;
                        }

                        m_AudioSourceList[m_FreeAudioSourceIndex].audioSourceReference.Play();
                    }
                }
            }
        }