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