Вот как у меня есть моя настройка Sound Manager для небольшой RPG, и мне просто интересно, была ли это хорошей практикой.Unity - Создание звукового менеджера
Что я пытаюсь сделать, было бы, чтобы мои два метода (PlayBGMusic и PlaySound) были «общедоступными», поэтому мне не пришлось бы захватывать GameObject по тегу и скрипту почти во всех моих других сценариях, которые хотите играть звук. Если я сделаю их «public static», тогда мне придется сделать мои переменные одинаковыми, что уберет от размещения что-либо в инспекторе.
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){
...
}
}
Это правильный способ справиться с чем-то подобным или есть другой способ, который может быть проще?
С появлением [AudioMixer] (http://docs.unity3d.com/Manual/AudioMixerOverview) у меня не было больше необходимости иметь звуковой менеджер в моих проектах больше. – Fabricio