This is how I currently have my Sound Manager setup for a small RPG and I was just wondering if this was good practice. 

What I was trying to go for was to have my two methods (PlayBGMusic and PlaySound) to be "public static" so I would not have to grab the GameObject by tag and the Script in almost all of my other scripts that want to play a sound. If I do make them "public static" then I would have to make my variables the same which takes away from placing anything in the inspector. 

```
public class Sound_Manager : MonoBehaviour {
    // Allow the user to decide if music should be on or off.
    public bool backgroundMusicOn;
    // Allow the user to decide if sound should be on or off.
    public bool soundOn;
    // The music volume.
    [Range(0,1)]
    public float musicVolume;
    // The sound volume.
    [Range(0,1)]
    public float soundVolume;
    // The Background music to be used for any manipulations.
    private AudioSource _bgMusic;

// Play a background song.
public void PlayBGMusic(AudioSource music){
...
}

// Mute Current Background Song.
public void MuteUnMuteBGMusic(){
....
}

// Play a sound.
public void PlaySound(AudioClip sfx, Vector3 location){
...
}
}

```

Is this a proper way of handling something like this or is there another way that could be more simple?