Lire un audio
Lecture de base
Pour lire un son importé, utilisez les mêmes fonctions que pour un son standard. Par exemple, utilisez la fonction PlaySound2D
ou Play
depuis un composant audio comme un Sound Cue.
Contrôle de la lecture
Rembobinage du temps de lecture
Pour rembobiner le temps de lecture du sound wave, utilisez la fonction 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);
Dans les versions d'UE jusqu'à la 4.27, si vous souhaitez démarrer la lecture à un temps spécifique supérieur à 0, vous devrez peut-être utiliser la fonction RewindPlaybackTime
au préalable. Sinon, le son pourrait ne pas être lu correctement en raison de problèmes internes du moteur dans la gestion des ondes procédurales. Ce problème a été résolu dans le moteur depuis la version 5.0.
Obtenir les informations de lecture
Pour obtenir le temps de lecture actuel de la vague sonore, utilisez les fonctions GetPlaybackTime
ou GetPlaybackPercentage
. Vous pouvez également obtenir la durée de la vague sonore en utilisant la fonction 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();
Vérification de l'état de lecture
Est en cours de lecture
Pour déterminer si la forme d'onde sonore est actuellement en lecture, vous pouvez utiliser la fonction 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();
La lecture est-elle terminée
Pour vérifier si la forme d'onde sonore a fini de jouer, vous pouvez utiliser la fonction 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();
Arrêter la lecture
Vous pouvez arrêter la lecture de l'onde sonore en utilisant la fonction StopPlayback
.
- Blueprint
- C++
// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Il est recommandé d'arrêter la lecture de l'onde sonore en utilisant des moyens externes (par exemple, en appelant Stop sur le composant audio) et de n'utiliser cette fonction que si aucun moyen externe n'est disponible. Notez également que cette fonction ne fonctionne pas pour la lecture à partir de MetaSounds.
Gestion des Événements
Suivi de l'Achèvement de la Lecture
Pour suivre la fin de la lecture audio, liez-vous au délégué 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);
}
};
Gestion de la mémoire
Libération de la mémoire
Vous pouvez effacer manuellement les données audio en utilisant la fonction ReleaseMemory
.
- Blueprint
- C++
// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
La libération manuelle de la mémoire n'est pas recommandée à moins que vous ayez des besoins spécifiques de gestion de mémoire ou que vous ayez désactivé le garbage collector.