Моя задача - озвучить автоматику c оружия. Проблема в том, что звуки огня намного длиннее, чем расстояние между выстрелами, поэтому я должен проигрывать их одновременно. Я придумал этот код ниже, но первые кадры глючат и загружают звук, так как новый каждый раз не выглядит отличным решением (я очистил все не звуковые относительные логи c):
Пожалуйста, сбросьте мне подсказка на лучший подход.
Спасибо
public class MachineGun
{
private readonly Uri soundLocation
private readonly int firePeriod;
private int ticksFromLastFire;
public MachineGun()
{
var appDirectory = Path.GetDirectoryName(Application.ExecutablePath);
soundLocation = new Uri("file:///" + appDirectory + @"/Assets\Sounds\GunSounds\fire_MachineGun.wav");
firePeriod = 3;
ticksFromLastFire = 0;
}
public override void Fire()
{
if (ticksFromLastFire < firePeriod) return;
ticksFromLastFire = 0;
var sound = new MediaPlayer();
sound.Open(soundLocation));
sound.Play();
}
public override void IncrementTick() => ticksFromLastFire++;
}