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

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.

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

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

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 :
En savoir plus sur les paramètres d'importation de texture.
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.
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.

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

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

Des options supplémentaires d'optimisation de maillage sont disponibles dans les paramètres du Player :
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.
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.
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.

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.


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.