Как я могу немедленно воспроизвести звук, когда другой звук заканчивается, используя XNA/XACT?

StackOverflow https://stackoverflow.com/questions/113977

  •  02-07-2019
  •  | 
  •  

Вопрос

Этот вопрос находится на границе между миром аудиодизайнера и программиста.Хотя на этот вопрос, возможно, придется частично ответить в этой области аудиодизайнера, для программиста это, несомненно, проблема.В нашем проекте мы хотим зациклить звук (фоновую музыку), пока до конца игрового таймера осталось больше одной минуты.Когда это время наступит, мы хотим остановить воспроизведение музыки в том виде, в каком она была написана, а затем сразу продолжить с конечного сегмента.Я изучал XACT, и, похоже, он поддерживает различные события.К сожалению, документация отсутствует, а мне как программисту приложение несколько чуждо.

Я хочу сделать что-то вроде этого (разные подходы):

  1. Когда музыка останавливается, я хочу связать событие, чтобы немедленно воспроизвести другой звук
  2. Когда маркер запускается в музыке, я хочу немедленно воспроизвести другой звук
  3. Я также хотел бы знать в своем заявлении, когда произойдут некоторые из этих событий.

Проблема в том, что мне не удалось найти какой-либо механизм автоматического воспроизведения звука при начале другого звука, и я не могу найти способ подключить события, созданные в проекте XACT, к C#.

Если это невозможно сделать (т.В XACT/XNA нет поддержки этих операций), пожалуйста, соберите свои идеи о том, как решить эту проблему с минимальными ошибками времени перекрестного звука.Предпочтительно, чтобы я мог максимально контролировать это на C# с помощью вызовов XNA.

Это было полезно?

Решение

Я думаю, что я решил это сейчас

Вот как я это сделал.

  1. Выберите Кий звук которого вы хотите изменить после его остановки ХАКТ.
  2. Набор Тип списка воспроизведения к Интерактивный.
  3. Открыть реплику Переходы.
  4. Выбирать Просмотр по месту назначения.
  5. Выберите Кий в (останавливаться) узел виден в древовидном представлении.
  6. В Свойства перехода в правой части древовидного представления, для Источник и место назначения:
    1. Набор Источник к Конец цикла.
    2. Набор Направление к Начало.
  7. В Свойства перехода в правой части древовидного представления, для Переходы:
    1. Набор Тип перехода к Прямой одновременный переход.
    2. Набор Переходный звук к звук, который вы хотите воспроизвести после того, как зацикленный звук завершил свой цикл.

Закройте окно и проверьте его, сыграв Cue.Также проверьте, чтобы остановить это Как написано чтобы увидеть, соответствует ли поведение вашим ожиданиям.


Выполнение

В коде Останавливаться кий Как написано чтобы получить такое поведение. Немедленный останавливает реплику, не воспроизводя финальную часть звука.Я надеюсь, что это поможет другим людям, которые могут столкнуться с этой проблемой в будущем.Вопрос и ответ были не так уж ориентированы на код, как я думал изначально.Также это относится и к XNA 2.0.Я не знаю, будут ли другие варианты управления подобным поведением в XNA 3.0+.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top