using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; using log4net; using UnityEngine; public class ManagableAudio : MonoBehaviour { private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); [SerializeField] private int maxParallel = 1; public int id = 0; public string audioTag = "audio"; public AudioSource audioSource; [HideInInspector] public List audioSources; void Awake() { if (gameObject.TryGetComponent(out AudioSource audioS)) { audioSource = audioS; } else { Log.Warn("Managable Audio Instance hasn't got an audio source game object" + $". Tag:{audioTag} ID:{id}"); return; } audioSources.Add(audioSource); BuildAudioSourceList(); } private void BuildAudioSourceList() { while (audioSources.Count < maxParallel) { var newAS = Instantiate(audioSource); audioSources.Add(newAS); } } }