
Configurer votre projet Unity pour de meilleures performances
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 :
- Optimisation des performances pour des graphismes haut de gamme
- Gestion de l'utilisation du GPU pour les jeux PC et console
- Programmation avancée et architecture de code
- Performance physique améliorée pour un gameplay fluide
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 les actifs comme 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.

Désactiver les paramètres de Player ou de Qualité inutiles
Dans les paramètres de 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 Target Architectures pour les anciens CPU si votre application ne les prend pas en charge.
Dans les paramètres de Quality, désactivez les niveaux de qualité inutiles.
En savoir plus sur le Graphics API.
Passez à IL2CPP
Changer le backend de script de Mono à IL2CPP (Intermediate Language to 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 Optimizing IL2CPP build times 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 to IL2CPP internals 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 trame 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 trame sont encore plus critiques. Un taux de trame 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 trame 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 trame 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 si ce 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.
É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 cette discussion 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 plus de mémoire que 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 :
- Jeux iOS ciblant les appareils A7 ou inférieurs (par exemple, iPhone 5, 5S, etc.) – utilisez PVRTC
- Jeux Android ciblant des appareils antérieurs à 2016 – utilisez 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 16 bits au lieu de textures 32 bits.
Consultez le manuel pour plus d'informations sur le format de compression de texture recommandé par plateforme.
Exploitez les paramètres d'importation de textures
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. C'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 appliquer 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 2D Sprites et UI Graphics. 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 petites textures en une seule texture plus grande. Les atlas de textures réduisent l'utilisation de la mémoire et nécessitent moins d'appels de dessin, 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 textures.
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 donne la possibilité de définir et de prioriser les tailles et les positions dans l'atlas de textures ou feuille de sprites.
Le Packer de textures consolide les cartes individuelles en une grande texture. Unity peut alors émettre un seul appel de dessin pour accéder aux textures packagées avec une surcharge de performance réduite.
Lisez-en plus sur les atlas de sprites ici.

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é.

Gérer les paramètres d'importation de maillage
Tout comme les textures, les maillages peuvent consommer une mémoire significative, donc 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 des maillages 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 la désactiver (dans Unity 2019.2 et antérieur, 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 forme 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.
Voir plus d'optimisations de maillage
Des options d'optimisation supplémentaires pour les maillages sont disponibles dans les paramètres du lecteur :
- 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 des maillages 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 pousser les textures vers le 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 Streaming de Texture. Vous pouvez activer le Streaming de Mip Maps 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 Texture é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 l'Mip Map Streaming API pour un contrôle supplémentaire.

Utilisez les Addressables
Le Système d'Actifs Adressables 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 ressources non codées (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 Adressables 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 Adressables sur Unity Learn pour un aperçu rapide de la façon dont le système d'actifs adressables peut fonctionner dans votre projet.
Et cliquez ici pour voir comment le système d'actifs adressables peut simplifier la gestion des ressources.

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