private void ConfigureAudioSource() { if (config != null) { AudioSource audioSource = GetComponent <AudioSource>(); config.ApplyTo(audioSource); } }
/// <summary> /// Instructs the AudioSource to play a single clip, with optional looping, in a position in 3D space. /// </summary> /// <param name="clip"></param> /// <param name="settings"></param> /// <param name="hasToLoop"></param> /// <param name="position"></param> public void PlayAudioClip(AudioClip clip, AudioConfigurationSO settings, bool hasToLoop, Vector3 position = default) { _audioSource.clip = clip; settings.ApplyTo(_audioSource); _audioSource.transform.position = position; _audioSource.loop = hasToLoop; _audioSource.Play(); if (!hasToLoop) { StartCoroutine(FinishedPlaying(clip.length)); } }
/// <summary> /// Instructs the AudioSource to play a single clip, with optional looping, in a position in 3D space. /// </summary> /// <param name="clip"></param> /// <param name="settings"></param> /// <param name="hasToLoop"></param> /// <param name="position"></param> public void PlayAudioClip(AudioClip clip, AudioConfigurationSO settings, bool hasToLoop, Vector3 position = default) { _audioSource.clip = clip; settings.ApplyTo(_audioSource); _audioSource.transform.position = position; _audioSource.loop = hasToLoop; _audioSource.time = 0f; //Reset in case this AudioSource is being reused for a short SFX after being used for a long music track _audioSource.Play(); if (!hasToLoop) { StartCoroutine(FinishedPlaying(clip.length)); } }