A SoundEffect
содержит фактические данные формы волны.Он использует большой объем памяти (столько, сколько требуется данным формы сигнала).
A SoundEffectInstance
- это небольшой объект, содержащий данные о воспроизведении (положение, громкость и т. Д.) И дескриптор для "голос ", который был выделен для воспроизведения.
Когда вы используете SoundEffect.Play
, внутренне он создает SoundEffectInstance
.Он также может объединять эти экземпляры, поэтому ему не нужно повторно создавать их при последующих вызовах.
Создание SoundEffectInstance
занимает некоторое время и память.Для звуковых эффектов в игре с частотой 30 кадров в секунду (33 мс на кадр) задержка должна быть незаметной.
Если вы пытаетесь воспроизвести последовательную музыку, смешивая разные звуковые эффекты, где даже 5 мсважно, чтобы реализовал свой собственный аудио микшер, используя DynamicSoundEffectInstance
.Это обеспечит синхронизацию звуков сэмпла.
Если вы пытаетесь создать какой-то играемый в реальном времени «инструмент», и вы пытаетесь получить свой вход для- задержка на выходе до 5 мсек - тогда сдавайтесь сейчас.5 мс - это абсурдно хорошо и обычно требует специального оборудования и программного обеспечения.
Тем не менее, если вам нужно как можно лучше уменьшить задержку ввода-вывода, вы можете опрашивать ввод чаще, чем один раз за кадр.И вам все еще следует использовать DSEI.Я не уверен, что DSEI имеет настраиваемый размер буфера воспроизведения, но если это так, вы должны сделать его как можно меньше, не вызывая сбоев звука.