예제 #1
0
        //void OnGUI()
        //{
        //    GUILayout.Label(playingPercussionItems.Count.ToString());
        //}

        void Update()
        {
            for (int i = playingPercussionItems.Count - 1; i >= 0; i--)
            {
                if (!playingPercussionItems[i].IsPlaying())
                {
                    playingPercussionItems[i].TryRelease();
                    playingPercussionItems.RemoveAt(i);
                }
            }

            for (int i = scheduledPercussionItems.Count - 1; i >= 0; i--)
            {
                scheduledPercussion = scheduledPercussionItems[i];

                if (audioSourcePool.AvailableCount > 0)
                {
                    audioSourcePoolItem = audioSourcePool.Acquire();

                    if (!audioSourcePoolItem.audioSource)
                    {
                        audioSourcePoolItem.audioSource             = gameObject.AddComponent <AudioSource>();
                        audioSourcePoolItem.audioSource.playOnAwake = false;
                    }

                    audioSourcePoolItem.Schedule(scheduledPercussion);
                    playingPercussionItems.Add(audioSourcePoolItem);
                    playingPercussionItems.Sort((a, b) =>
                    {
                        return(-1 * a.dspTime.CompareTo(b.dspTime));
                    });

                    scheduledPercussionItems.RemoveAt(i);
                }
            }
        }