SoundEffect.CreateInstance загружается из файла каждый раз?
Это то, что беспокоило меня. Если я создам SoundEffectInstance
с помощью SoundEffect.CreateInstance()
Я должен избавиться от этого, когда я закончу с этим. SoundEffect.CreateInstance()
не использует ContentManager
насколько я могу судить.
Так он загружается из файла или хранит копию в памяти? Загрузка из файла, очевидно, будет очень медленной:-/
1 ответ
Это деталь реализации. Вы не знаете наверняка, это не имеет значения, оно может отличаться для разных платформ и может измениться в будущем.
Однако вы можете сделать обоснованное предположение: прежде всего тот факт, что SoundEffectInstance
существует, и что вы загружаете звуковые файлы в SoundEffect
указывает на то, что SoundEffect
вероятно, отвечает за удержание звукового эффекта в памяти. И существование SoundEffect.FromStream
и на основе буфера SoundEffect
конструкторы являются убедительными признаками того, что SoundEffect
должен иметь механизм для сохранения звукового буфера в памяти. Поэтому довольно безопасно предположить, что при загрузке SoundEffect
из файла, он использует тот же механизм.
Если это действительно важно, вы можете проверить его, удалив или изменив звуковой файл, после загрузки SoundEffect
, а затем создать экземпляр.
Как всегда, если производительность действительно важна, вы должны измерить ее.
Конечно, создание SoundEffectInstance
распределяет ресурсы (аудио голоса, управляемая и, возможно, неуправляемая память). Так что это не то, что вы должны создавать регулярно, если вы можете избежать этого - например, путем объединения и повторного использования экземпляров. Когда вы используете SoundEffect.Play
, затем SoundEffect
внутренне управляет пулом SoundEffectInstance
объекты для вас.