Les fonctions audio de l'Unreal Engine 5 peuvent prendre en charge des projets aux exigences audio variées. L'importation audio peut être effectuée en naviguant vers un dossier de contenu, en cliquant sur le bouton Importer ou en naviguant vers le dossier à l'aide de l'explorateur de votre OS. Le moteur crée alors un .uasset avec votre son. L'Unreal Engine supporte les fichiers .wav, .ogg, .flac, .aif, .opus, .mp3 . Les fichiers peuvent avoir une profondeur de bits de 16 ou 24 et n'importe quel taux d'échantillonnage. En interne, l'Unreal Engine stocke les fichiers audio importés dans un format .wav non compressé de 16 bits .
Pour plus d'informations sur le moteur audio dans Unreal, consultez les pages suivantes :
Les signaux sonores sont des objets utilisés pour jouer des sons au moment de l'exécution. Les signaux sonores sont sélectionnés parmi un ensemble de fichiers audio représentant le même concept. Par exemple, vous pouvez avoir un signal sonore pour "vent", et au moment de l'exécution, le repère sonore choisira parmi plusieurs fichiers audio de bruits de vent pour la lecture. Un exemple de cela dans Parrot est le signal sonore de l'éclaboussure d'eau : Content/Sound/SFX/WaterSplash/CUE_WaterSplashSound
Les classes de sons sont des types de ressources utilisés par le moteur audio pour regrouper plusieurs sons puis modifier simultanément les paramètres de toutes les ondes sonores concernées. Parrot a MainSoundClass, qui mélange Musique et effets sonores.
Les mixages de classes de sons peuvent appliquer des seuils de volume et sont automatiquement appliqués chaque fois qu'un son d'une classe de sons est joué.
Implémentation spécifique à Parrot
Dans Parrot, la plupart des sons utilisés sont des signaux sonores qui contiennent un seul son. Le volume et le tangage sont réglés par signal sonore, le volume global étant contrôlé par une classe de sons par défaut et des mélanges de sons pour les paramètres. Pour rationaliser cela pour la musique, Parrot a mis au point un sous-système audio personnalisé.
Exemple de ramassage
Les objets à ramasser sont un exemple de signaux sonores simples qui sont joués une fois et sont ensuite détruits. Les ramassages utilisent les effets sonores des pièces de opengameart.org. Les ressources sources importées sont situées sous Content/Assets/OpenGameArt/8bitCoinSounds. Les signaux sonores créés pour chacun de ces fichiers se trouvent sous Content/Sound/SFX/Pickups. Appelez Play Sound 2D avec le signal sonore souhaité dans BP_PickupBase lorsque l'événement de ramassage est déclenché.
Tous les ramassages supportent les effets visuels, effets sonores, et doivent être détruits au contact. Cela peut s'effectuer dans la classe BP_PickupBase.
Vous pouvez utiliser Effet sonore 2D ici car le son n'a pas besoin d'être spatialement pertinent dans le monde. Si le son devait être pertinent dans l'espace, vous pourriez utiliser Jouer le son à l'emplacement à la place.
Boucles de musique
La musique fonctionne de la même manière que les signaux sonores standard. L'importation des fichiers sonores et la configuration des signaux sonores sont identiques aux effets sonores. Cependant, il y a quelques étapes supplémentaires :
Sur la ressource sonore importée elle-même, assurez-vous que le mode de virtualisation est réglé sur Jouer en cas de silence. C'est important pour la musique car cela permet au lecteur de respecter les réglages du volume. Sans cela, lorsque le volume est coupé, le son est détruit et n'est plus joué lorsque vous rétablissez le volume.
Dans le signal sonore lui-même, cliquez sur le nœud de la piste et assurez-vous que Mise en boucle est réglé.
Paramètres de son
Tous les paramètres de Parrot sont liés aux différents volumes sonores.
Sous Content/Sound/Settings il existe une ressource de classe de son appelée MainSoundClass. Sous Classes enfants, vous pouvez faire pointer votre classe de sons vers d'autres classes de sons pertinentes. Les classes d'enfants par défaut comprennent effets sonores et Musique.
Dans le même dossier, il y a une ressource appelée DefaultSoundMix. Vous pouvez définir les Effets de classe sonore dans les paramètres MainSoundClass. Vérifiez que Appliquer aux enfants est activé.
Dans chaque signal sonore, assurez-vous que la classe est définie sur la catégorie appropriée. Pour les ramassages, utilisez la classe des effets sonores.
Pour modifier les paramètres de votre mix au moment de l'exécution, vous pouvez utiliser le nœud Définir remplacement de mixage de classe de son avec le nœud Envoyer modificateur de mixage du son. Cela permet d'appliquer toutes les modifications que vous avez apportées.
Il s'agit d'un exemple blueprint, mais dans Parrot, cette opération est généralement réalisée en C++ dans le sous-système audio.
Sous-système audio Parrot
Cette section explique ce que fait l'implémentation du sous-système audio. Pour savoir pourquoi Parrot a un sous-système pour l'audio, voir Les sous-systèmes dans Parrot.
Le sous-système audio Parrot est une classe C++ appelée UParrotAudioSubsystem. Il partage la durée de vie de l'instance de jeu, car les paramètres de volume peuvent être modifiés à tout moment à partir du menu principal ou du menu de pause. Lorsqu'une partie est en cours, le sous-système audio est également à l'écoute des changements d'état du jeu. Vous pouvez ensuite changer la piste musicale lorsqu'un niveau commence, lorsqu'un niveau est terminé ou lorsque le joueur sort des limites.
WBP_SettingScreen montre le sous-système audio en action. Les valeurs des curseurs provenant de l'UMG (concepteur d'IU Unreal Motion Graphics) sont transmises au sous-système en C++. Le mixeur sonore d'exécution est mis à jour chaque fois que les valeurs changent. Le temps de Fondu d'entrée est égal à zéro, de sorte que les changements de volume sont appliqués immédiatement.
Les paramètres sont sauvegardés avec le nœud Enregistrer les paramètres audio.
Pour voir les détails du fonctionnement de la sérialisation pour l'enregistrement de ces paramètres, voir Sérialisation dans Parrot.
La musique dans Parrot est presque entièrement réalisée en C++. En raison de la structure de Parrot, où chaque mappage est un niveau, il y a une classe AParrotWorldSettings. Vous pouvez l'utiliser pour définir des données spécifiques au monde, comme la musique du niveau. Le sous-système audio interroge les paramètres du monde et extrait la piste dont il a besoin. Pour réagir aux changements d'état après le début du jeu, liez l'état du jeu Parrot sur WorldBeginPlay.