So I’m still kinda new to C# but I’m making a simple asteroid game and I’m trying to have it so when an asteroid explodes, the sound effect doesn’t abruptly cut off before another asteroid gets hit. I was looking around and I saw that PlayOneShot(); would have worked for overlapping sounds but it’s somehow not in my case.
Any help would be greatly appreciated! Thank you very much in advance
Here’s the code for my involved scripts:
(Audio Manager)
using UnityEngine.Audio;
using UnityEngine;
using System;
public class AudioManager : MonoBehaviour
{
public Sounds[] sounds;
void Awake()
{
foreach (Sounds s in sounds)
{
s.source = gameObject.AddComponent<AudioSource>();
s.source.clip = s.clip;
s.source.volume = s.volume;
s.source.pitch = s.pitch;
}
}
public void Play(string name)
{
Sounds s = Array.Find(sounds, sound => sound.name == name);
s.source.Play();
}
public void PlayOne(string name)
{
Sounds s = Array.Find(sounds, sound => sound.name == name);
s.source.PlayOneShot(); // ERROR HERE. Says 'No overload method for PlayOneShot' takes 0 arguments
}
(Game Manager)
public class GameManager : MonoBehaviour
{
//Relevant function
public void asteroidDestroyed(Asteroid asteroid)
{
FindObjectOfType<AudioManager>().PlayOneShot("Rock Explosion"); // And this is what I'm trying to call in from the Audio manager script
this.explosionEffect.transform.position = asteroid.transform.position;
this.explosionEffect.Play();
}