Funkcje audio Unreal Engine 5 mogą obsługiwać projekty o różnych wymaganiach audio. Importowanie audio można wykonać, przechodząc do folderu zawartości, klikając przycisk Importuj lub przechodząc do folderu za pomocą eksploratora systemu operacyjnego. Silnik utworzy następnie plik .uasset zawierający dźwięk. Unreal Engine obsługuje pliki .wav, .ogg, .flac, .aif, .opus, .mp3 . Pliki mogą mieć głębię bitową 16 lub 24 i dowolną częstotliwość próbkowania. Wewnętrznie Unreal Engine przechowuje zaimportowane pliki audio w 16-bitowym nieskompresowanym formacie .wav.
Aby dowiedzieć się więcej na temat silnika audio w Unreal, patrz:
Sygnały dźwiękowe to obiekty używane do odtwarzania dźwięków w czasie wykonywania. Sygnały dźwiękowe wybierane są z zestawu plików audio reprezentujących tę samą koncepcję. Na przykład możesz mieć sygnał dźwiękowy „Wiatr”, a w czasie wykonywania sygnał dźwiękowy wybierze z wielu plików audio zawierających odgłosy wiatru ten, który zostanie odtworzony. Przykładem tego w Parrot jest sygnał dźwiękowy plusku wody: Content/Sound/SFX/WaterSplash/CUE_WaterSplashSound
Klasy dźwięku to typy zasobów używane przez silnik audio do grupowania wielu dźwięków, a następnie jednoczesnej zmiany parametrów wszystkich odpowiednich fal dźwiękowych. Parrot posiada klasę MainSoundClass, która miksuje zarówno Music (Muzyka), jak i SFX (Efekty dźwiękowe).
Miksy klas dźwięków mogą stosować progi głośności i są automatycznie stosowane przy odtwarzaniu dowolnego dźwięku z danej klasy dźwięku.
Implementacja specyficzna dla Parrot
W Parrot większość używanych dźwięków to sygnały dźwiękowe zawierające jeden dźwięk. Głośność i wysokość dźwięku są ustawiane dla poszczególnych sygnałów dźwiękowych, a ogólna głośność jest kontrolowana przez domyślną klasę dźwięku i miksu dźwięków dla ustawień. Aby usprawnić ten proces w przypadku muzyki, Parrot posiada niestandardowy podsystem audio.
Przykład przedmiotu do podniesienia
Przedmioty do podnoszenia są przykładem prostych sygnałów dźwiękowych, które odtwarzane są jednokrotnie, a następnie ulegają zniszczeniu. W przypadku przedmiotów do podnoszenia wykorzystano efekty dźwiękowe monet pochodzące z serwisu opengameart.org. Zaimportowane zasoby źródłowe znajdują się w folderze Content/Assets/OpenGameArt/8bitCoinSounds. Utworzone sygnały dźwiękowe dla każdego z tych plików znajdują się w folderze Content/Sound/SFX/Pickups. Wywołaj funkcję Play Sound 2D (Odtwórz dźwięk 2D) z żądanym sygnałem dźwiękowym w BP_PickupBase po zainicjowaniu zdarzenia podniesienia przedmiotu.
Wszystkie przedmioty do podnoszenia obsługują efekty wizualne (VFX) i dźwiękowe (SFX) i muszą zostać zniszczone w momencie kontaktu. Można to zrobić w klasie BP_PickupBase.
Możesz użyć funkcji Play Sound 2D (Odtwórz dźwięk 2D), ponieważ dźwięk nie musi być powiązany z konkretnym miejscem w świecie gry. Jeśli dźwięk musiałby być powiązany z konkretnym miejscem, możesz użyć funkcji Play Sound At Location (Odtwórz dźwięk w lokalizacji).
Pętle muzyczne
Muzyka działa podobnie jak standardowe sygnały dźwiękowe. Importowanie plików dźwiękowych i konfigurowanie sygnałów dźwiękowych przebiega tak samo jak w przypadku efektów dźwiękowych. Należy jednak wykonać kilka dodatkowych kroków:
W samym zaimportowanym zasobie dźwiękowym upewnij się, że tryb wirtualizacji jest ustawiony na Play When Silent (Odtwarzaj przy wyciszeniu). Jest to ważne w przypadku muzyki, ponieważ pozwala odtwarzaczowi zachować ustawienia głośności. Bez tego, gdy głośność zostanie wyciszona, dźwięk zostanie zniszczony i nie będzie odtwarzany po przywróceniu głośności.
W samym sygnale dźwiękowym kliknij węzeł ścieżki i upewnij się, że opcja Looping (Zapętlanie) jest włączona.
Ustawienia dźwięku
Wszystkie ustawienia w Parrot dotyczą różnych poziomów głośności.
W sekcji Content/Sound/Settings znajduje się zasób klasy dźwięku o nazwie MainSoundClass. W sekcji Child Classes (Klasy pochodne) można wskazać klasę dźwięku do dowolnej innej odpowiedniej klasy dźwięku. Domyślne klasy pochodne obejmują SFX (Efekty dźwiękowe) i Music (Muzyka).
W tym samym folderze znajduje się zasób o nazwie DefaultSoundMix. Sound Class Effects (Efekty klasy dźwięku) można ustawić w ustawieniach MainSoundClass. Upewnij się, że opcja Apply To Children (Zastosuj do elementów pochodnych) jest włączona.
W każdym sygnale dźwiękowym upewnij się, że klasa jest ustawiona na odpowiednią kategorię. W przypadku przedmiotów do podnoszenia użyj klasy SFX (Efekty dźwiękowe).
Aby zmodyfikować ustawienia miksu w czasie wykonywania, możesz użyć węzła Set Sound Class Mix Override wraz z węzłem Push Sound Mix Modifier. Spowoduje to zastosowanie wszystkich wprowadzonych zmian.
Jest to przykład blueprintu, ale w Parrot zazwyczaj robi się to w języku C++ w podsystemie audio.
Podsystem audio w Parrot
W tej sekcji wyjaśniono działanie implementacji podsystemu audio. Aby dowiedzieć się, dlaczego Parrot posiada podsystem audio, patrz: Podsystemy w Parrot.
Podsystem audio Parrot jest klasą C++ o nazwie UParrotAudioSubsystem. Działa on przez cały czas życia instancji gry, ponieważ ustawienia głośności można zmienić w dowolnym momencie z menu głównego lub menu wstrzymania gry. Podczas rozgrywki podsystem audio nasłuchuje również zmian stanu gry. Dzięki temu można zmienić utwór muzyczny na początku poziomu, po jego ukończeniu lub gdy gracz wyjdzie poza granice gry.
WBP_SettingScreen pokazuje działanie podsystemu audio. Wartości suwaków z UMG (Unreal Motion Graphics UI Designer) są przekazywane do podsystemu w języku C++. Mikser dźwięku w czasie wykonywania aktualizuje się przy każdej zmianie wartości. Czas Fade In (Narastanie) wynosi zero, dzięki czemu zmiany głośności są stosowane natychmiast.
Ustawienia są zapisywane za pomocą węzła Save Audio Settings.
Aby zapoznać się ze szczegółami działania serializacji podczas zapisywania tych ustawień, patrz: Serializacja w Parrot.
Muzyka w Parrot jest tworzona prawie w całości w języku C++. Ze względu na strukturę Parrot, w której każda mapa jest poziomem, istnieje klasa AParrotWorldSettings. Można jej używać do ustawiania dowolnych danych specyficznych dla świata, takich jak muzyka poziomu. Podsystem audio wysyła zapytanie do ustawień świata i pobiera potrzebny utwór. Aby reagować na zmiany stanu po rozpoczęciu gry, należy powiązać się ze stanem gry Parrot w WorldBeginPlay.