تشغيل الصوت
التشغيل الأساسي
لتشغيل موجة صوتية مستوردة، استخدم نفس الدوال التي تستخدمها مع الموجة العادية. على سبيل المثال، استخدم دالة 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);
:::ملاحظة
في إصدارات Unreal Engine حتى 4.27، إذا كنت ترغب في بدء التشغيل من وقت محدد أكبر من 0، قد تحتاج إلى استخدام دالة RewindPlaybackTime
مسبقًا. وإلا، قد لا يعمل الصوت بشكل صحيح بسبب مشكلات داخلية في المحرك تتعامل مع الموجات الإجرائية. تم حل هذه المشكلة في المحرك منذ الإصدار 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();
لا يُوصى بالإفراج اليدوي عن الذاكرة إلا إذا كان لديك متطلبات محددة لإدارة الذاكرة أو إذا قمت بتعطيل جامع القمامة.