Reproduzir áudio
Reprodução Básica
Para reproduzir um som importado, use as mesmas funções que você usaria para um som comum. Por exemplo, use a função PlaySound2D
ou Play
de um componente de áudio como um Sound Cue.
Controlando a Reprodução
Retrocedendo o Tempo de Reprodução
Para retroceder o tempo de reprodução da onda sonora, use a função 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);
Em versões da UE até a 4.27, se você deseja iniciar a reprodução a partir de um tempo específico maior que 0, pode ser necessário usar a função RewindPlaybackTime
antes. Caso contrário, o som pode não ser reproduzido corretamente devido a problemas internos do engine ao lidar com ondas procedurais. Esse problema foi resolvido no engine a partir da versão 5.0.
Obtendo Informações de Reprodução
Para obter o tempo atual de reprodução da onda sonora, use as funções GetPlaybackTime
ou GetPlaybackPercentage
. Você também pode obter a duração da onda sonora usando a função 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();
Verificando Status de Reprodução
Está Reproduzindo Atualmente
Para determinar se a onda sonora está sendo reproduzida no momento, você pode usar a função 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();
A Reprodução Terminou
Para verificar se a onda sonora terminou de tocar, você pode usar a função 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();
Interrompendo a Reprodução
Você pode interromper a reprodução da onda sonora usando a função StopPlayback
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
É recomendado parar a reprodução da onda sonora usando meios externos (por exemplo, chamando Stop no componente de áudio) e usar esta função apenas se meios externos não estiverem disponíveis. Além disso, observe que esta função não funciona para reprodução a partir de MetaSounds.
Manipulação de Eventos
Rastreando Conclusão de Reprodução
Para rastrear o fim da reprodução de áudio, vincule-se ao delegado 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);
}
};
Gerenciamento de Memória
Liberando Memória
Você pode limpar manualmente os dados de áudio usando a função ReleaseMemory
.
- Blueprint
- C++
// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
A liberação manual de memória não é recomendada, a menos que você tenha requisitos específicos de gerenciamento de memória ou tenha desativado o coletor de lixo.