Audio abspielen
Grundlegende Wiedergabe
Um eine importierte Soundwelle abzuspielen, verwenden Sie dieselben Funktionen wie für eine reguläre. Beispielsweise können Sie die PlaySound2D
-Funktion oder die Play
-Funktion von einer Audio-Komponente wie einem Sound Cue nutzen.
Wiedergabe steuern
Wiedergabezeit zurückspulen
Um die Wiedergabezeit der Soundwelle zurückzuspulen, verwenden Sie die Funktion 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);
In UE-Versionen bis einschließlich 4.27 müssen Sie möglicherweise die Funktion RewindPlaybackTime
verwenden, wenn Sie die Wiedergabe zu einer bestimmten Zeit größer als 0 starten möchten. Andernfalls kann es aufgrund interner Engine-Probleme bei der Handhabung prozeduraler Wellenformen zu fehlerhafter Wiedergabe kommen. Dieses Problem wurde seit Engine-Version 5.0 behoben.
Abrufen von Wiedergabeinformationen
Um die aktuelle Abspielzeit der Soundwelle zu erhalten, verwenden Sie die Funktionen GetPlaybackTime
oder GetPlaybackPercentage
. Die Dauer der Soundwelle können Sie mit der Funktion GetDuration
abrufen.
- 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();
Wiedergabestatus überprüfen
Wird aktuell abgespielt
Um festzustellen, ob die Soundwelle aktuell abgespielt wird, können Sie die Funktion IsPlaying
verwenden.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Check if the sound wave is currently playing
bool bIsPlaying = ImportedSoundWave->IsPlaying();
Ist die Wiedergabe beendet
Um zu überprüfen, ob die Soundwelle das Abspielen beendet hat, können Sie die Funktion IsPlaybackFinished
verwenden.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Check if the sound wave has finished playback
bool bIsFinished = ImportedSoundWave->IsPlaybackFinished();
Wiedergabe stoppen
Sie können die Soundwellen-Wiedergabe mit der Funktion StopPlayback
beenden.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Es wird empfohlen, die Wiedergabe der Schallwelle mit externen Mitteln zu stoppen (z.B. durch Aufruf von Stop auf der Audio-Komponente) und diese Funktion nur zu verwenden, wenn keine externen Mittel verfügbar sind. Beachten Sie außerdem, dass diese Funktion nicht für die Wiedergabe von MetaSounds funktioniert.
Ereignisbehandlung
Verfolgung des Wiedergabeabschlusses
Um das Ende der Audiowiedergabe zu verfolgen, binden Sie sich an den OnAudioPlaybackFinished
-Delegaten.
- 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);
}
};
Speicherverwaltung
Speicher freigeben
Sie können die Audiodaten manuell mit der Funktion ReleaseMemory
löschen.
- Blueprint
- C++
// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
Manuelle Speicherfreigabe wird nicht empfohlen, es sei denn, Sie haben spezifische Anforderungen an die Speicherverwaltung oder haben den Garbage Collector deaktiviert.