title: Creating a sound manager
body: <p>This is how I currently have my Sound Manager setup for a small RPG and I was just wondering if this was good practice.  </p>
  
  <p>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.  </p>
  
  <pre><code>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){
  ...
  }
  }
  </code></pre>
  
  <p>Is this a proper way of handling something like this or is there another way that could be more simple?</p>