//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); } } }