• Jeux
  • Industrie
  • Ressources
  • Communauté
  • Apprentissage
  • Assistance
Développement
Moteur Unity
Créez des jeux 2D et 3D pour n'importe quelle plateforme
TéléchargerOffres et tarifs
Monétisation
Achat intégré (IAP)
Découvrez et gérez les IAP à travers les magasins
Mediation
Maximisez les revenus et optimisez la monétisation
Qualité des annonces
Protégez l'expérience utilisateur de votre application
Tapjoy
Construisez une fidélité utilisateur à long terme
Tous les produits de monétisation
Acquisition de nouveaux joueurs
Acquisition de nouveaux joueurs
Faites-vous découvrir et acquérez des utilisateurs mobiles
Unity Vector AI
Connectez les joueurs avec les bons jeux
Aura publicité sur appareil
Atteignez les utilisateurs sur l'appareil au moment de l'engagement maximal
Tous les produits de croissance
Cas d’utilisation
Collaboration 3D
Construisez et révisez des projets 3D en temps réel
Formation immersive
Entraînez-vous dans des environnements immersifs
Expériences client
Créez des expériences interactives 3D
Toutes les solutions sectorielles
Secteurs
Fabrication
Atteindre l'excellence opérationnelle
Distribution
Transformer les expériences en magasin en expériences en ligne
Automobile
Élever l'innovation et les expériences en voiture
Tous les secteurs
Bibliothèque technique
Documentation
Manuels d'utilisation officiels et références API
Outils de développement
Versions de publication et suivi des problèmes
Feuille de route
Examiner les fonctionnalités à venir
Glossaire
Bibliothèque de termes techniques
Informations
Études de cas
Histoires de succès dans le monde réel
Guides des meilleures pratiques
Conseils et astuces d'experts
Toutes les ressources
Nouveautés
Blog
Mises à jour, informations et conseils techniques
Actualités
Actualités, histoires et centre de presse
Centre communautaire
Discussions
Discuter, résoudre des problèmes et se connecter
Événements
Événements mondiaux et locaux
Histoires de la communauté
Made with Unity
Mise en avant des créateurs Unity
Diffusions en direct
Rejoignez les développeurs, créateurs et initiés
Unity Awards
Célébration des créateurs Unity dans le monde entier
Pour tous les niveaux
Unity Learn
Maîtrisez les compétences Unity gratuitement
Formation professionnelle
Améliorez votre équipe avec des formateurs Unity
Vous découvrez Unity ?
Démarrer
Démarrez votre apprentissage
Parcours essentiels Unity
Vous découvrez Unity ? Commencez votre parcours
Guides pratiques
Conseils pratiques et meilleures pratiques
Formation
Pour les étudiants
Démarrez votre carrière
Pour les enseignants
Boostez votre enseignement
Licence d'enseignement subventionnée
Apportez la puissance de Unity à votre institution
Certifications
Prouvez votre maîtrise de Unity
Options d'assistance
Obtenir de l'aide
Vous aider à réussir avec Unity
Plans de succès
Atteignez vos objectifs plus rapidement avec un support expert
FAQ
Réponses aux questions courantes
Contactez-nous.
Connectez-vous avec notre équipe
Offres et tarifs
Langue
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
Réseaux sociaux
Devise
Acheter
  • Produits
  • Unity Ads
  • Abonnement
  • Asset Store Unity
  • Revendeurs
Formation
  • Participants
  • Formateurs
  • Établissements
  • Certification
  • Formation
  • Programme de développement des compétences
Télécharger
  • Hub Unity
  • Télécharger des archives
  • Programme version Bêta
Unity Labs
  • Laboratoires
  • Publications
Ressources
  • Plateforme d'apprentissage
  • Communauté
  • Documentation
  • Unity QA
  • FAQ
  • État des services
  • Études de cas
  • Made with Unity
Unity
  • Notre entreprise
  • Newsletter
  • Blog
  • Événements
  • Carrières
  • Aide
  • Presse
  • Partenaires
  • Investisseurs
  • Affiliés
  • Sécurité
  • Impact sociétal
  • Inclusion et diversité
  • Contactez-nous.
Copyright © 2025 Unity Technologies
  • Mentions légales
  • Politique de confidentialité
  • Cookies
  • Ne vendez ou ne partagez pas mes informations personnelles

« Unity », ses logos et autres marques sont des marques commerciales ou des marques commerciales déposées de Unity Technologies ou de ses filiales aux États-Unis et dans d'autres pays (pour en savoir plus, cliquez ici). Les autres noms ou marques cités sont des marques commerciales de leurs propriétaires respectifs.

Hero background image

Conseils d'optimisation pour l'IU Unity

Découvrez comment optimiser pleinement votre interface utilisateur, avec des conseils pour diviser les Canvases et les groupes de mise en page, mettre en pool des objets UI, et plus encore.
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.
Cliquez ici.

Ceci est l'une des plusieurs pages fournissant des conseils approfondis sur la façon d'optimiser vos jeux PC et console. Vous pouvez trouver la collection complète dans le livre électronique gratuit, Optimisez les performances de votre jeu console et PC, rempli de plus de 80 conseils pratiques et meilleures pratiques pour l'optimisation des performances.

  • Divisez vos Canvases
  • Limitez les Raycasters graphiques et désactivez la cible de Raycast
  • Évitez les éléments UI coûteux
  • Évitez les groupes de mise en page si possible
  • Mettez en pool les objets UI de manière intelligente
  • Comment cacher un Canvas
  • Utilisation optimale des animateurs sur les éléments UI
  • Lors de l'utilisation d'une interface utilisateur en plein écran, cachez tout le reste
  • Plus de ressources
  • Obtenez le livre électronique gratuit pour en savoir plus

Divisez vos Canvases

Problème : Lorsqu'un seul élément change sur le Canvas UI, cela salit tout le Canvas.

Le Canvas est l'élément de base de l'IU Unity. Il génère des maillages qui représentent les éléments de l'IU placés dessus, régénère les maillages lorsque les éléments de l'IU changent, et émet des requêtes au GPU pour que l'IU s'affiche réellement.

Générer ces maillages peut être coûteux. Les éléments UI doivent être regroupés en lots afin qu'ils soient dessinés avec le moins d'appels de dessin possible. Parce que la génération de lots est coûteuse, nous ne voulons les régénérer que lorsque cela est nécessaire. Le problème est que, lorsque un ou plusieurs éléments changent sur un Canvas, l'ensemble du Canvas doit être analysé à nouveau pour déterminer comment dessiner ses éléments de manière optimale.

De nombreux utilisateurs construisent l'interface utilisateur de leur jeu entier sur un seul Canvas avec des milliers d'éléments. Lorsqu'ils changent un élément, ils peuvent subir un pic de CPU coûtant plusieurs millisecondes. Pour en savoir plus sur pourquoi la reconstruction est si coûteuse, allez à la marque 24:55 dans cette session Unite.

Solution : Divisez vos Canvases.

Chaque Canvas est une île qui isole ses éléments de ceux des autres Canvases. Profitez de la capacité d'UGUI à prendre en charge plusieurs Canvases en découpant vos Canvases pour résoudre les problèmes de regroupement avec Unity UI.

Vous pouvez également imbriquer des Canvases, ce qui permet aux concepteurs de créer de grandes interfaces utilisateur hiérarchiques, sans avoir à penser à l'emplacement des différents éléments à l'écran à travers les Canvases. Les Canvases enfants isolent également le contenu de leur parent et des Canvases frères et sœurs. Ils maintiennent leur propre géométrie et effectuent leur propre regroupement. Une façon de décider comment les diviser est basée sur la fréquence à laquelle ils doivent être actualisés. Gardez les éléments d'interface utilisateur statiques sur un Canvas séparé, et les éléments dynamiques qui se mettent à jour en même temps sur des sous-Canvases plus petits. Assurez-vous également que tous les éléments d'interface utilisateur sur chaque Canvas ont la même valeur Z, matériaux et textures.

Interface Graphic Raycaster

Limitez les Raycasters graphiques et désactivez la cible de Raycast

Problème : Utilisation inadéquate du Graphic Raycaster

Le Graphic Raycaster est le composant qui traduit votre entrée en événements d'interface utilisateur. Plus précisément, il traduit les clics d'écran ou les entrées tactiles à l'écran en événements d'interface utilisateur, puis les envoie aux éléments d'interface utilisateur intéressés. Vous avez besoin d'un Graphic Raycaster sur chaque Canvas qui nécessite une entrée, y compris les sous-Canvases. Cependant, il passe également en boucle à travers chaque point d'entrée à l'écran et vérifie s'ils se trouvent dans le RectTransform d'une interface utilisateur, ce qui entraîne un potentiel de surcharge.

Malgré son nom, le Graphic Raycaster n'est pas vraiment un raycaster. Par défaut, il teste uniquement les graphiques de l'interface utilisateur. Il prend l'ensemble des éléments de l'interface utilisateur qui souhaitent recevoir des entrées sur un canevas donné et effectue des vérifications d'intersection. Par exemple, il vérifie si le point où l'événement d'entrée se produit par rapport au RectTransform de chaque élément de l'interface utilisateur sur le canevas du Graphic Raycaster est marqué comme interactif.

Le défi est que tous les éléments de l'interface utilisateur ne souhaitent pas recevoir de mises à jour.

Solution : Supprimez les Graphic Raycasters des canevas d'interface utilisateur non interactifs et désactivez la cible de raycast pour les éléments statiques ou non interactifs.

En particulier, le texte sur un bouton désactivant la cible de raycast réduira directement le nombre de vérifications d'intersection que le Graphic Raycaster doit effectuer à chaque image.

Problème : Parfois, le Graphic Raycaster agit comme un raycaster.

Si vous définissez le mode de rendu de votre canevas sur Worldspace Camera ou Screen Space Camera, vous pouvez ajouter un masque de blocage. Le masque de blocage détermine si le Raycaster lancera des rayons via la physique 2D ou 3D, pour déterminer si un objet physique bloque la capacité de l'utilisateur à interagir avec l'interface utilisateur.

Solution : Lancer des rayons via la physique 2D ou 3D peut être coûteux, donc utilisez cette fonctionnalité avec parcimonie.

Minimisez le nombre de Graphic Raycasters en les excluant des canevas d'interface utilisateur non interactifs, car – dans ce cas – il n'y a aucune raison de vérifier les événements d'interaction.

En savoir plus sur le Graphic Raycaster dans cette documentation.

Interface grille

Évitez les éléments UI coûteux

Problème : Les grandes listes, les vues en grille et de nombreux éléments d'interface utilisateur superposés sont coûteux.

Les grandes listes et les vues en grille sont coûteuses, et le superposition de nombreux éléments d'interface utilisateur (c'est-à-dire, des cartes empilées dans un jeu de bataille de cartes) crée un surdessin.

Solution : Évitez de nombreux éléments d'interface utilisateur superposés.

Personnalisez votre code pour fusionner les éléments d'interface utilisateur superposés à l'exécution en moins d'éléments et de lots.

Si vous devez créer une grande liste ou une vue en grille, comme un écran d'inventaire avec des centaines d'articles, envisagez de réutiliser un petit pool d'éléments d'interface utilisateur plutôt qu'un seul élément d'interface utilisateur pour chaque article.

Découvrez ce projet GitHub pour un exemple d'une liste déroulante optimisée.

Interface groupes de layouts

Évitez les groupes de mise en page si possible

Problème : Chaque élément d'interface utilisateur qui essaie de modifier sa mise en page effectuera au moins un appel GetComponent.

Lorsque un ou plusieurs éléments d'interface utilisateur enfants changent dans un système de mise en page, la mise en page devient "sale." Les éléments enfants modifiés invalident le système de mise en page qui les possède.

Un système de mise en page est un ensemble de groupes de mise en page contigus directement au-dessus d'un élément de mise en page. Un élément de mise en page n'est pas seulement le composant d'élément de mise en page (images UI, textes et Scroll Rects), il comprend également des éléments de mise en page – tout comme les Scroll Rects sont également des groupes de mise en page.

Maintenant, concernant le problème en question : Chaque élément UI qui marque sa mise en page comme "sale" effectuera, au minimum, un appel à GetComponent. Cet appel recherche un groupe de mise en page valide sur le parent de l'élément de mise en page. S'il en trouve un, il continue à remonter la hiérarchie de Transform jusqu'à ce qu'il cesse de rechercher des groupes de mise en page ou atteigne la racine de la hiérarchie ; le premier des deux à se produire. Ainsi, chaque groupe de mise en page ajoute un appel à GetComponent au processus de salissure de chaque élément enfant de mise en page, rendant les groupes de mise en page imbriqués extrêmement mauvais pour les performances.

Solution : Évitez les groupes de mise en page si possible.

Utilisez des ancres pour des mises en page proportionnelles. Sur les UIs chauds avec un nombre dynamique d'éléments UI, envisagez d'écrire votre propre code pour calculer les mises en page. Assurez-vous d'utiliser cela à la demande, plutôt que pour chaque changement.

En savoir plus sur les groupes de mise en page dans notre documentation.

Interface : Regroupement des objets

Mettez en pool les objets UI de manière intelligente

Problème : Pooling des objets UI de la mauvaise manière

Les gens regroupent souvent des objets UI en les re-parentant puis en les désactivant, ce qui entraîne une salissure inutile.

Solution : Désactivez d'abord l'objet, puis re-parenté-le dans le pool.

Vous salirez l'ancienne hiérarchie une fois, mais une fois que vous l'avez re-parentée, vous éviterez de salir l'ancienne hiérarchie une seconde fois – et vous ne salirez pas du tout la nouvelle hiérarchie. Si vous retirez un objet du pool, re-parenté-le d'abord, mettez à jour vos données, puis activez-le.

En savoir plus sur les concepts de base de l'Object Pooling dans Unity.

Composant UI Canvas

Comment cacher un Canvas

Problème : Incertitude sur la façon de cacher un Canvas

Il est parfois utile de cacher des éléments d'interface utilisateur et des Canvases. Mais comment pouvez-vous faire cela efficacement ?

Solution : Désactivez le composant Canvas lui-même.

Désactiver le composant Canvas empêchera le Canvas d'émettre des appels de dessin vers le GPU. De cette façon, le Canvas ne sera plus visible. Cependant, le Canvas ne rejettera pas son tampon de sommets, il conservera tous ses maillages et sommets. Ensuite, lorsque vous le réactivez, cela ne déclenchera pas une reconstruction - il recommencera simplement à les dessiner.

De plus, désactiver le composant Canvas ne déclenche pas les coûteux rappels OnDisable/OnEnable via la hiérarchie du Canvas. Faites juste attention à désactiver les composants enfants qui exécutent un code coûteux par image.

En savoir plus sur le composant Canvas ici.

Utilisation optimale des animateurs sur les éléments UI

Problème : Utiliser des animateurs sur votre UI

Les animateurs vont perturber leurs éléments d'interface utilisateur à chaque image, même si la valeur dans l'animation ne change pas.

Solution : Utilisez du code pour l'animation UI.

Mettez des animateurs uniquement sur des éléments d'interface utilisateur dynamiques qui changent toujours. Pour les éléments qui changent rarement ou qui changent temporairement en réponse à des événements, écrivez votre propre code ou utilisez un système de tweening. Il existe un certain nombre de grandes solutions disponibles sur le Asset Store.

Lors de l'utilisation d'une interface utilisateur en plein écran, cachez tout le reste

Problème : Mauvaise performance avec l'UI en plein écran

Si votre jeu affiche un écran de pause ou de démarrage qui couvre entièrement la scène, le reste du jeu est toujours rendu en arrière-plan, ce qui peut affecter les performances.

Solution : Cachez tout le reste.

Si vous avez un écran qui couvre tout le reste de la scène, désactivez la caméra qui rend la scène 3D. De même, désactivez les éléments Canvas cachés derrière le Canvas supérieur.

Envisagez de réduire l'Application.targetFrameRate pendant une interface utilisateur en plein écran, car vous ne devriez pas avoir besoin de mettre à jour à 60 fps.

Plus de ressources

Optimisez les performances de vos jeux sur console et PC

Webinaire Accélérer le succès : Le relooking de l'Unity UI

Suite au webinaire Accélérer le succès : Questions et réponses sur le relooking de l'Unity UI

Comment optimiser les performances du jeu avec l'utilisation de la caméra – Partie I

Actifs GUI les mieux notés

Support, services, économies : Voir vos avantages Unity Pro

Optimisez les performances du jeu

Obtenez le livre électronique gratuit pour en savoir plus

Offrez à vos joueurs la meilleure expérience de jeu possible. Avec plus de 80 conseils pratiques et meilleures pratiques des ingénieurs experts de Unity, vous pouvez optimiser vos jeux sur PC et console.

Créées par les équipes de succès et de Productions Unity Studio de Unity, ces pratiques détaillées – rassemblées à partir d'engagements réels avec des studios de premier plan – aideront à améliorer les performances globales de votre jeu.

Téléchargez l'ebook