Воспроизведение аудио
Базовое воспроизведение
Для воспроизведения импортированного звукового файла используйте те же функции, что и для обычного. Например, функцию PlaySound2D
или Play
из аудиокомпонента, такого как Sound Cue.
Управление воспроизведением
Перемотка времени воспроизведения
Для перемотки времени воспроизведения звукового файла используйте функцию RewindPlaybackTime
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Rewind playback time of the sound wave for 12.5 seconds
ImportedSoundWave->RewindPlaybackTime(12.5f);
В версиях UE до 4.27, если вам нужно начать воспроизведение с определенного времени больше 0, может потребоваться предварительно использовать функцию RewindPlaybackTime
. В противном случае звук может воспроизводиться некорректно из-за внутренних проблем движка с обработкой procedural waves. Эта проблема была исправлена в движке начиная с версии 5.0.
Получение информации о воспроизведении
Чтобы получить текущее время воспроизведения звуковой волны, используйте функции GetPlaybackTime
или GetPlaybackPercentage
. Также вы можете получить длительность звуковой волны с помощью функции GetDuration
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Get the current playback time of the sound wave
float PlaybackTime = ImportedSoundWave->GetPlaybackTime();
// Get the current playback percentage of the sound wave
float PlaybackPercentage = ImportedSoundWave->GetPlaybackPercentage();
// Get the duration of the sound wave
float Duration = ImportedSoundWave->GetDuration();
Проверка статуса воспроизведения
Воспроизводится ли в данный момент
Чтобы определить, воспроизводится ли звуковая волна в текущий момент, можно использовать функцию IsPlaying
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Check if the sound wave is currently playing
bool bIsPlaying = ImportedSoundWave->IsPlaying();
Завершено ли воспроизведение
Чтобы проверить, завершилось ли воспроизведение звуковой волны, используйте функцию IsPlaybackFinished
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Check if the sound wave has finished playback
bool bIsFinished = ImportedSoundWave->IsPlaybackFinished();
Остановка воспроизведения
Вы можете остановить воспроизведение звуковой волны с помощью функции StopPlayback
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Рекомендуется останавливать воспроизведение звуковой волны внешними средствами (например, вызовом Stop на аудиокомпоненте) и использовать эту функцию только в случае отсутствия других вариантов. Также учтите, что эта функция не работает для воспроизведения из MetaSounds.
Обработка событий
Отслеживание завершения воспроизведения
Для отслеживания окончания воспроизведения аудио привяжитесь к делегату OnAudioPlaybackFinished
.
- Blueprint
- C++
UCLASS()
class AMyAudioPlayer : public AActor
{
GENERATED_BODY()
public:
UFUNCTION()
void OnAudioFinished()
{
// Handle the end of audio playback
}
void BindAudioDelegate(UImportedSoundWave* ImportedSoundWave)
{
// Bind to the OnAudioPlaybackFinished delegate
ImportedSoundWave->OnAudioPlaybackFinished.AddDynamic(this, &AMyAudioPlayer::OnAudioFinished);
}
};
Управление памятью
Освобождение памяти
Вы можете вручную очистить аудиоданные с помощью функции ReleaseMemory
.
- Blueprint
- C++
// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
Ручное освобождение памяти не рекомендуется, если у вас нет особых требований к управлению памятью или отключен сборщик мусора.