Hero background image

Configurer votre projet Unity pour de meilleures performances

Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Ceci est le premier d'une série d'articles qui déploie des conseils d'optimisation pour vos projets Unity. Utilisez-les comme guide pour fonctionner à des taux de rafraîchissement plus élevés avec moins de ressources. Une fois que vous avez essayé ces meilleures pratiques, assurez-vous de consulter les autres pages de la série :

Consultez nos derniers guides d'optimisation pour les développeurs et artistes Unity 6 :

Configurez votre projet pour de meilleures performances

Un pipeline d'actifs bien optimisé peut accélérer les temps de chargement, réduire l'utilisation de la mémoire et améliorer les performances à l'exécution. En travaillant avec un artiste technique expérimenté, votre équipe peut définir et appliquer des formats d'actifs, des spécifications et des paramètres d'importation pour garantir un flux de travail efficace et rationalisé.

Ne vous fiez pas uniquement aux paramètres par défaut. Profitez de l'onglet de remplacement spécifique à la plateforme pour optimiser des actifs tels que les textures, la géométrie de maillage et les fichiers audio. Des paramètres incorrects peuvent entraîner des tailles de build plus importantes, des temps de build plus longs et une mauvaise utilisation de la mémoire.

Envisagez d'utiliser Préréglages pour établir des paramètres de base adaptés aux besoins spécifiques de votre projet. Cette approche proactive aide à garantir que les actifs sont optimisés dès le départ, ce qui conduit à de meilleures performances et à une expérience plus cohérente sur toutes les plateformes.

Pour plus de conseils, consultez les meilleures pratiques pour les actifs artistiques ou explorez le cours d'optimisation de l'art 3D pour les applications mobiles sur Unity Learn. Ces ressources fournissent des informations précieuses qui peuvent vous aider à prendre des décisions éclairées sur l'optimisation des actifs pour les builds web Unity, mobiles et XR.

Les trois types d'atlas lors de l'emballage de sprites 2D dans Unity
TROIS TYPES D'ATLASES LORS DE L'EMBALLAGE DE SPRITES 2D DANS UNITY

Désactivez les paramètres de Player ou de qualité inutiles

Dans les paramètres Player, désactivez Auto Graphics API pour les plateformes non prises en charge afin d'éviter de générer des variantes de shader excessives. Désactivez Cibles Architectures pour les anciens CPU si votre application ne les prend pas en charge.

Dans les paramètres de Qualité, désactivez les niveaux de qualité inutiles.

En savoir plus sur le API Graphique.

Paramètres de qualité
DANS LES PARAMÈTRES DE QUALITÉ, DÉSACTIVEZ LES NIVEAUX DE QUALITÉ INUTILES.

Passez à IL2CPP

Changer le backend de script de Mono à IL2CPP (Langage Intermédiaire vers C++) peut offrir de meilleures performances d'exécution globales. Cependant, cela peut également augmenter les temps de construction. Certains développeurs préfèrent utiliser Mono localement pour une itération plus rapide, puis passer à IL2CPP pour les machines de construction et/ou les candidats à la publication. Consultez la documentation sur l'optimisation des temps de construction IL2CPP pour en savoir plus sur la réduction de vos temps de construction.

Remarque : En utilisant cette option, Unity convertit le code IL des scripts et des assemblies en C++ avant de créer un fichier binaire natif (.exe, .apk, .xap) pour votre plateforme cible.

Voir l'Introduction aux internals d'IL2CPP ou consulter la page du manuel des options du compilateur pour apprendre comment les différentes options du compilateur affectent les performances d'exécution.

Choisissez le bon taux de rafraîchissement

Les projets mobiles doivent équilibrer les taux de rafraîchissement avec la durée de vie de la batterie et le throttling thermique. Au lieu de pousser les limites de votre appareil à 60 fps, envisagez de fonctionner à 30 fps comme compromis. Unity par défaut à 30 fps pour mobile.

Lors de la cible des plateformes XR, les considérations de taux de rafraîchissement sont encore plus critiques. Un taux de rafraîchissement de 72 fps, 90 fps, ou même 120 fps, est souvent nécessaire pour maintenir l'immersion et prévenir le mal des transports. Ces taux de rafraîchissement plus élevés aident à garantir une expérience fluide et réactive, ce qui est crucial pour le confort dans les environnements VR. Cependant, ceux-ci présentent leurs propres défis en termes de consommation d'énergie et de gestion thermique, en particulier dans les casques VR autonomes.

Choisir le bon taux de rafraîchissement consiste à comprendre les exigences et les contraintes spécifiques de votre plateforme cible, qu'il s'agisse d'un appareil mobile, d'un casque VR autonome ou d'un appareil AR. En sélectionnant soigneusement un taux de rafraîchissement approprié, vous pouvez optimiser à la fois les performances et l'expérience utilisateur sur différentes plateformes.

Vous pouvez également ajuster le taux de rafraîchissement dynamiquement pendant l'exécution avec Application.targetFrameRate. Par exemple, vous pourriez descendre en dessous de 30 fps pour des scènes lentes ou relativement statiques et réserver des réglages de fps plus élevés pour le gameplay.

Plus d'informations sont disponibles dans la documentation.

Réduisez ou désactivez la fréquence de l'accéléromètre

Unity regroupe l'accéléromètre de votre mobile plusieurs fois par seconde. Désactivez cela s'il n'est pas utilisé dans votre application, ou réduisez sa fréquence pour de meilleures performances globales.

En savoir plus sur l'accéléromètre.

Comment définir la fréquence de l'accéléromètre
DÉSACTIVEZ LA FRÉQUENCE DE L'ACCÉLÉROMÈTRE SI VOUS NE L'UTILISEZ PAS DANS VOTRE JEU MOBILE.

Évitez les grandes hiérarchies

Divisez vos hiérarchies. Si vos GameObjects n'ont pas besoin d'être imbriqués dans une hiérarchie, simplifiez le parentage.

Des hiérarchies plus petites bénéficient du multithreading pour rafraîchir les Transforms dans votre scène. Des hiérarchies complexes entraînent des calculs de Transform inutiles et un coût plus élevé pour la collecte des déchets.

Voir Optimiser la hiérarchie et ce talk Unite pour des conseils sur les Transforms.

Compressez vos textures

Considérez ces deux exemples ci-dessus utilisant le même modèle et la même texture. Les paramètres à gauche consomment presque 26 fois la mémoire de ceux à droite, sans beaucoup d'amélioration de la qualité visuelle.

Utilisez la compression de texture évolutive adaptative (ATSC) pour mobile, XR et le web. La grande majorité des jeux en développement tendent à cibler des appareils min-spec qui prennent en charge la compression ATSC.

Les seules exceptions sont :

  • les jeux iOS ciblant les appareils A7 ou inférieurs (par exemple, iPhone 5, 5S, etc.) – utilisez PVRTC
  • Les jeux Android ciblant des appareils antérieurs à 2016 – utilisent ETC2(Compression de texture Ericsson)

Si des formats compressés tels que PVRTC et ETC ne sont pas suffisamment de haute qualité, et si ASTC n'est pas entièrement pris en charge sur votre plateforme cible, essayez d'utiliser des textures de 16 bits au lieu de textures de 32 bits.

Consultez le manuel pour plus d'informations sur le format de compression de texture recommandé par plateforme.

Textures non compressées vs textures compressées DXT1
LES TEXTURES NON COMPRESSÉES DEMANDENT UNE QUANTITÉ DE MÉMOIRE SUPÉRIEURE À CELLE DES TEXTURES COMPRESSÉES.

Exploitez les paramètres d'importation de texture

Les textures peuvent potentiellement utiliser des ressources excessives, donc optimiser vos paramètres d'importation est crucial. En général, essayez de suivre ces directives :

  • Réduisez la taille maximale:Utilisez les paramètres minimaux qui produisent des résultats visuellement acceptables. Ceci est non destructif et peut rapidement réduire votre mémoire de texture.
  • Utilisez des puissances de deux (POT):Unity nécessite des dimensions de texture POT pour les formats de compression de texture.
  • Désactivez l'option Lecture/Écriture activée:Lorsqu'elle est activée, cette option crée une copie dans la mémoire adressable CPU et GPU, doublant l'empreinte mémoire de la texture. Désactivez-la dans la plupart des cas, et activez-la uniquement si vous générez une texture à l'exécution que vous devez écraser. Vous pouvez également imposer cette option via Texture2D.Apply, en passant makeNoLongerReadable défini sur True.
  • Désactivez les Mip Maps inutiles:Les Mip Maps ne sont pas nécessaires pour les textures qui restent à une taille constante à l'écran, telles que Sprites 2D et Graphiques UI. Cependant, laissez les Mip Maps activées pour les modèles 3D qui varient en distance par rapport à la caméra.

En savoir plus sur les paramètres d'importation de texture.

Atlas vos textures

L'atlasing est le processus de regroupement de plusieurs textures plus petites en une seule texture plus grande. Les atlas de texture réduisent l'utilisation de la mémoire et nécessitent moins de requêtes, diminuant ainsi l'effort requis par le GPU.

  • Pour les projets 2D : Utilisez un Atlas de sprites (Actif > Créer > 2D > Atlas de sprites) plutôt que de rendre des sprites ou textures individuels.
  • Pour les projets 3D : Vous pouvez utiliser votre logiciel de création de contenu numérique (DCC) de choix. Plusieurs outils tiers comme MA_TextureAtlasser ou TexturePacker peuvent également être utilisés pour créer des atlas de texture.

Combinez les textures et remappez les UV pour toute géométrie 3D qui ne nécessite pas de cartes haute résolution. Un éditeur visuel vous permet de définir et de prioriser les tailles et positions dans l'atlas de texture ou feuille de sprites.

Le Texture Packer consolide les cartes individuelles en une grande texture. Unity peut alors émettre une seule requête pour accéder aux textures packagées avec une surcharge de performance réduite.

Lisez-en plus sur les atlas de sprites ici.

Interface d'atlas de texture
UTILISEZ DES ATLAS DE TEXTURE POUR RÉDUIRE LE NOMBRE DE REQUÊTES.

Vérifiez vos comptes de polygones

Des modèles de plus haute résolution signifient une utilisation de mémoire plus importante et potentiellement des temps GPU plus longs. Votre géométrie de fond a-t-elle besoin de cinq cent mille polygones ? Envisagez de réduire les modèles dans votre logiciel de création de contenu numérique de choix. Supprimez les polygones invisibles du point de vue de la caméra, et utilisez des textures et des cartes normales pour les détails fins au lieu de maillages haute densité.

Retirez les faces du modèle
SUPPRIMEZ TOUTES LES FACES INVISIBLES POUR OPTIMISER VOS MODÈLES.

Gérer les paramètres d'importation de maillage

Tout comme les textures, les maillages peuvent consommer une mémoire significative, alors choisissez des paramètres d'importation optimaux pour eux. Réduisez l'empreinte mémoire des maillages avec les pratiques suivantes :

  • Compresser le maillage : Une compression agressive peut réduire l'espace disque (la mémoire à l'exécution, cependant, n'est pas affectée). Notez que la quantification du maillage peut entraîner des inexactitudes, donc expérimentez avec les niveaux de compression pour voir ce qui fonctionne pour vos modèles.
  • Désactiver la lecture/écriture : Activer cette option duplique le maillage en mémoire, ce qui garde une copie du maillage dans la mémoire système et une autre dans la mémoire GPU. Dans la plupart des cas, vous devriez le désactiver (dans Unity 2019.2 et versions antérieures, cette option est cochée par défaut).
  • Désactiver les rigs et les formes de mélange : Si votre maillage n'a pas besoin d'animation squelettique ou de formes de mélange, désactivez ces options autant que possible.

Désactiver les normales et les tangentes : Si vous êtes absolument certain que le matériau du maillage n'aura pas besoin de normales ou de tangentes, décochez ces options pour des économies supplémentaires.

Vérifiez vos paramètres d'importation de maillage.
VÉRIFIEZ VOS PARAMÈTRES D'IMPORTATION DE MAILLAGE

Voir plus d'optimisations de maillage

Des options supplémentaires d'optimisation de maillage sont disponibles dans les paramètres du Player :

  • Compression des sommets définit la compression des sommets de chaque canal. Par exemple, vous pouvez activer la compression pour tout sauf les positions et les UVs de lightmap. Cela peut réduire l'utilisation de la mémoire à l'exécution de vos maillages.
  • Remarque : Le paramètre de compression de maillage dans les paramètres d'importation de chaque maillage remplace le paramètre de compression des sommets. Dans ce cas, la copie à l'exécution du maillage est non compressée et peut utiliser plus de mémoire.
  • Optimiser les données de maillage supprime toutes les données des maillages qui ne sont pas requises par le matériau qui leur est appliqué (comme les tangentes, les normales, les couleurs et les UVs).

Auditez vos actifs

En automatisant le processus d'audit, vous pouvez éviter de modifier accidentellement les paramètres des actifs. Le AssetPostProcessor peut vous aider à standardiser vos paramètres d'importation ou à analyser les actifs existants. Il vous permet d'exécuter des scripts lors de l'importation d'actifs et, essentiellement, vous invite à personnaliser les paramètres avant et/ou après l'importation de modèles, de textures, de sons, et plus encore.

Lisez-en plus sur l'audit des actifs dans le guide de compréhension de l'optimisation.

Ajustez le tampon de texture asynchrone

Unity utilise un tampon circulaire pour envoyer des textures au GPU. Vous pouvez ajuster manuellement ce tampon de texture asynchrone via QualitySettings.asyncUploadBufferSize.

Si le taux de téléchargement est trop lent ou si le thread principal se bloque lors du chargement de plusieurs textures à la fois, ajustez ces tampons de texture. Vous pouvez généralement définir la valeur (en Mo) à la taille de la plus grande texture que vous devez charger dans la scène.

Gardez à l'esprit que changer les valeurs par défaut peut entraîner une forte pression sur la mémoire. De plus, vous ne pouvez pas retourner la mémoire du tampon circulaire au système après que Unity l'ait allouée. Si la mémoire GPU est surchargée, le GPU décharge la texture la plus récente et la moins utilisée, et force le CPU à la re-télécharger la prochaine fois qu'elle entre dans le frustum de la caméra.

Explorez toutes les restrictions de mémoire pour les tampons de texture dans le tutoriel de gestion de la mémoire, et consultez Optimiser les performances de chargement pour voir comment vous pouvez améliorer les temps de chargement.

Diffuser des Mip Maps et des textures

Le système Mip Map Streaming vous donne le contrôle sur les niveaux de Mip Map qui doivent être chargés en mémoire. Activez-le en allant dans les paramètres de Qualité de Unity (Modifier > Paramètres du projet > Qualité) et cochez l'option Texture Streaming. Vous pouvez activer les Mip Maps de streaming dans les Paramètres d'importation de texture sous Avancé.

Ce système réduit la quantité totale de mémoire nécessaire pour les textures car il ne charge que les Mip Maps nécessaires pour rendre la position actuelle de la caméra. Sinon, Unity charge toutes les textures par défaut.

Le streaming de textures échange une petite quantité de ressources CPU pour économiser une quantité potentiellement importante de mémoire GPU. Il réduit également automatiquement les niveaux de Mip Map pour rester dans le Budget Mémoire défini par l'utilisateur.

Vous pouvez utiliser le API de Mip Map Streaming pour un contrôle supplémentaire.

Options de streaming de textures
PARAMÈTRES DE STREAMING DE TEXTURE

Utilisez les Addressables

Le Systeme d'Assets Addressables fournit un moyen simplifié de gérer votre contenu. Ce système unifié charge les AssetBundles par "adresse" ou alias, de manière asynchrone à partir d'un chemin local ou d'un réseau de distribution de contenu (CDN).

Si vous divisez vos actifs non codés (modèles, textures, Prefabs, audio, et même des scènes entières) en un AssetBundle, vous pouvez les séparer en contenu téléchargeable (DLC).

Ensuite, utilisez les Addressables pour créer une version initiale plus petite pour votre application mobile. Cloud Content Delivery vous permet d'héberger et de livrer le contenu de votre jeu aux joueurs au fur et à mesure qu'ils progressent dans le jeu.

Consultez le tutoriel Commencer avec les Addressables sur Unity Learn pour un aperçu rapide de la façon dont le système d'Assets Addressables peut fonctionner dans votre projet.

Et cliquez ici pour voir comment le système d'Assets Addressables peut simplifier la gestion des actifs.

Chargez des actifs par "adresse" en utilisant le système d'Assets Addressables.
CHARGER DES ACTIFS PAR "ADRESSE" EN UTILISANT LE SYSTÈME D'ASSETS ADDRESSABLES
Plus de bonnes pratiques de Unity
Plus de conseils pour Unity 6

Trouvez plus de bonnes pratiques et de conseils pour les développeurs et créateurs Unity avancés sur le hub des bonnes pratiques Unity. Choisissez parmi plus de 30 guides, créés par des experts de l'industrie, ainsi que des ingénieurs et artistes techniques Unity, qui vous aideront à développer efficacement avec les outils et systèmes de Unity.