Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public void PlayMusic (string music, bool isLooped = false) { }
public void StopMusic () { }
public enum SoundFXChannel {
First = 0,
Second = 1,
Third = 2
}
...
public void PlayFX (AudioClip clip, SoundFXChannel channel = SoundFXChannel.First, bool forceInterrupt = false) { }
public void StopFX (SoundFXChannel channel) { }
public sealed class MusicOnStart : MonoBehaviour {
public string Music = null;
public bool IsLooped = true;
IEnumerator Start () {
yield return null;
if (SoundManager.Instance.MusicVolume == 0f) {
SoundManager.Instance.StopMusic ();
}
SoundManager.Instance.PlayMusic (Music, IsLooped);
}
}
public sealed class SoundOnStart : MonoBehaviour {
public AudioClip Sound = null;
public SoundFXChannel Channel = SoundFXChannel.First;
public bool IsInterrupt = false;
IEnumerator Start () {
yield return null;
SoundManager.Instance.PlayFX (Sound, Channel, IsInterrupt);
}
}
public sealed class SoundOnEnable : MonoBehaviour {
public AudioClip Sound = null;
public SoundFXChannel Channel = SoundFXChannel.First;
public bool IsInterrupt = false;
void OnEnable () {
SoundManager.Instance.PlayFX (Sound, Channel, IsInterrupt);
}
}
То есть при смене музыки трек меняется резко, без приглушения? У нас композитор явно настаивал на плавном угасании первого трека и нарастании второго. Иначе может по слуху бить.
Вот у вас эти классы по умолчанию в первый канал пишут, так если их два запустится, то один прибьется сразу, хотя два канала пустые еще?
Но в целом я думаю, что ограничивать звук 3 каналами смысла мало.
Более менее больших звуков в один момент времени больше 1-2 быть не должно.
Какое то ограничение, конечно нужно, но тут уже экспериментально и от таргет устройства зависит.
Sound Manager для небольших игр и прототипов на Unity