Odtwarzanie dźwięku
Podstawowe odtwarzanie
Aby odtworzyć zaimportowaną falę dźwiękową, użyj tych samych funkcji, co dla zwykłej fali. Na przykład użyj funkcji PlaySound2D
lub Play
z komponentu audio, takiego jak Sound Cue.
Kontrola odtwarzania
Przewijanie czasu odtwarzania
Aby przewinąć czas odtwarzania fali dźwiękowej, użyj funkcji 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);
W wersjach UE do 4.27, jeśli chcesz rozpocząć odtwarzanie od określonego czasu większego niż 0, możesz potrzebować wcześniej użyć funkcji RewindPlaybackTime
. W przeciwnym razie dźwięk może nie odtwarzać się poprawnie z powodu wewnętrznych problemów silnika z obsługą fal proceduralnych. Ten problem został rozwiązany w silniku od wersji 5.0.
Uzyskiwanie informacji o odtwarzaniu
Aby uzyskać aktualny czas odtwarzania fali dźwiękowej, użyj funkcji GetPlaybackTime
lub GetPlaybackPercentage
. Możesz również uzyskać czas trwania fali dźwiękowej za pomocą funkcji 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();
Sprawdzanie statusu odtwarzania
Czy obecnie odtwarza
Aby określić, czy fala dźwiękowa jest obecnie odtwarzana, możesz użyć funkcji 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();
Czy Odtwarzanie Zostało Zakończone
Aby sprawdzić, czy fala dźwiękowa zakończyła odtwarzanie, możesz użyć funkcji 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();
Zatrzymywanie Odtwarzania
Możesz zatrzymać odtwarzanie fali dźwiękowej za pomocą funkcji StopPlayback
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Zaleca się zatrzymanie odtwarzania fali dźwiękowej za pomocą zewnętrznych środków (np. wywołując Stop na komponencie audio) i użycie tej funkcji tylko wtedy, gdy zewnętrzne środki nie są dostępne. Należy również zauważyć, że ta funkcja nie działa dla odtwarzania z MetaSounds.
Obsługa zdarzeń
Śledzenie zakończenia odtwarzania
Aby śledzić koniec odtwarzania audio, podłącz się do delegata 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);
}
};
Zarządzanie Pamięcią
Zwalnianie Pamięci
Możesz ręcznie wyczyścić dane audio za pomocą funkcji ReleaseMemory
.
- Blueprint
- C++
// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
Ręczne zwalnianie pamięci nie jest zalecane, chyba że masz określone wymagania dotyczące zarządzania pamięcią lub wyłączyłeś moduł odśmiecania pamięci (garbage collector).