Skip to content
Unity Perf Audit logo

Unity Perf Audit

Audit statique de performance pour projets Unity. Triggers: /perf, /perf-audit, 'audit performance', 'optimiser performance', 'anti-pattern performance', 'frame rate', 'profiler', 'budget fps'. Analyse le code C# du projet pour detecter les anti-patterns de performance (CPU, GPU, memoire). Produi...

SKILL.md

Full skill instructions

Unity Perf Audit

Ce que fait cette skill

Analyse statique du code C# d'un projet Unity pour detecter les anti-patterns de performance. Pas besoin d'executer le jeu ni de profiler -- on scanne le code source avec Grep et Glob.

Produit :

  • Un inventaire des fichiers C# du projet (compte, taille, fichiers volumineux)
  • Un rapport d'anti-patterns detectes avec severite et localisation
  • Les 5 correctifs prioritaires avec code avant/​apres

Prerequis

  • Projet Unity avec des scripts C# dans Assets/
  • Acces en lecture au dossier du projet
  • Aucun package, aucun outil externe requis

Arbre de decision

Symptome rapporte ?
|
+-- FPS bas en general --> Lancer le scan complet (etapes 1-5)
+-- Spikes ponctuels / stuttering --> Focus CPU (anti-patterns C1-C12)
+-- Memoire qui grimpe / crashs OOM --> Focus Memory (anti-patterns M1-M7)
+-- Rendu lent, draw calls hauts --> Focus GPU (anti-patterns G1-G5)
+-- Pas de symptome precis (audit preventif) --> Scan complet

Demarrage rapide

  1. Scanner la structure projet (Glob **/​*.cs)
  2. Detecter les anti-patterns CPU, GPU, memoire (Grep)
  3. Scorer et categoriser chaque probleme
  4. Produire le rapport avec fichier:ligne
  5. Proposer les 5 fixes prioritaires

Guide etape par etape

Etape 1 : Scanner la structure projet

Utiliser Glob pour inventorier tous les fichiers C# du projet.

Glob: Assets/​**/​*.cs

Analyser :

  • Nombre total de fichiers .cs
  • Identifier les fichiers > 500 lignes (Read pour compter les lignes ou wc -l)
  • Identifier les dossiers avec le plus de scripts (structure du projet)
  • Exclure les dossiers Plugins/, ThirdParty/, TextMesh Pro/ de l'analyse (code externe)

Commande Bash pour compter les lignes de tous les fichiers :

find <project>/​Assets -name "*.cs" -not -path "*/​Plugins/​*" -not -path "*/​ThirdParty/​*" -not -path "*/​TextMesh Pro/​*" | xargs wc -l | sort -rn | head -20

Produire un resume :

## Structure projet
- **Fichiers C#** : 47
- **Lignes totales** : 12,340
- **Fichiers > 500 lignes** : PlayerManager.cs (623), GameController.cs (891)
- **Dossiers principaux** : Scripts/ (28), UI/ (12), Enemies/ (7)

Etape 2 : Detecter les anti-patterns

Scanner les fichiers C# pour les anti-patterns CPU, GPU et memoire. Voir references/​anti-patterns.md pour la table complete des patterns a detecter.

Pour chaque match, noter le fichier, le numero de ligne, et la ligne de code. Executer les recherches Grep sur tous les fichiers .cs du projet (hors exclusions).

Etape 3 : Scorer et categoriser

Attribuer un score par fichier et global :

SeveritePointsImpact
Critical10Cause directe de lag visible (chaque frame)
High5Degradation significative sous charge
Medium2Impact mesurable au profiler
Low1Bonne pratique, impact minimal

Score global :

  • 0-10 : Propre. Pas d'action requise.
  • 11-30 : Acceptable. Quelques points a corriger.
  • 31-60 : Problematique. Corrections recommandees avant build.
  • 61+ : Critique. Corrections obligatoires.

Ne scorer que les problemes reellement trouves dans le code. Ne jamais inventer de problemes hypothetiques.

Etape 4 : Produire le rapport

Format du rapport : tableau avec colonnes #, Probleme, Severite, Fichier:Ligne, Description. Grouper par severite (Critical > High > Medium > Low). Ajouter un resume par severite (nombre + score). Inclure un score global avec le verdict (Propre / Acceptable / Problematique / Critique).

Etape 5 : Proposer les 5 fixes prioritaires

Pour chaque fix, montrer le code avant et apres. Prendre les problemes par ordre de severite (Critical d'abord). Format : titre, severite, ligne, impact, puis code avant/​apres.

Patterns de fix courants :

Anti-patternFix standard
GetComponent dans UpdateCache dans Awake avec champ prive
Find en runtimeCache dans Awake ou injecter via SerializeField
Camera.main dans Updateprivate Camera _cam; void Awake() => _cam = Camera.main;
String concat dans UpdateStringBuilder ou string.Format ou supprimer le log
Instantiate dans UpdateObject pooling (Queue + activation/​desactivation)
foreach dans UpdateBoucle for avec List<T>
SendMessageInterface directe ou event C#
.tag ==.CompareTag("name")
new WaitForSeconds repeteCache static readonly WaitForSeconds
Event sans unsubscribeAjouter -= dans OnDisable() ou OnDestroy()
Resources.Load sans UnloadAjouter Resources.UnloadUnusedAssets() apres usage ou passer a Addressables

Regles strictes

TOUJOURS :

  • Reporter uniquement les problemes trouves dans le code reel (pas d'hypotheses)
  • Indiquer le fichier et le numero de ligne exact pour chaque probleme
  • Fournir un correctif concret avec code avant/​apres
  • Prioriser par impact (Critical en premier)
  • Exclure le code tiers (Plugins/, ThirdParty/, TextMesh Pro/)
  • Verifier le contexte : un GetComponent dans Start() est acceptable, dans Update() non

JAMAIS :

  • Suggerer d'optimiser du code qui ne s'execute qu'une fois (Start, Awake, OnEnable initial, loading screens)
  • Inventer des problemes non presents dans le code
  • Recommander des refactors massifs (on corrige les hot paths, pas l'architecture)
  • Suggerer des outils externes ou packages payants
  • Reporter un foreach sur une collection fixe hors hot path comme un probleme
  • Ignorer les faux positifs : verifier que le pattern est bien dans le contexte problematique avant de le reporter

Skills connexes

  • Diagnostiquer un bug de performance specifique (crash, freeze ponctuel) ? Utiliser /​unity-debug (Unity Debug)
  • Appliquer les corrections detectees avec refactoring structure ? Utiliser /​unity-refactor (Unity Refactor)
  • Tester apres correction ? Utiliser /​unity-test (Unity Test)

Troubleshooting

ProblemeSolution
Trop de faux positifs GetComponentVerifier la methode englobante. GetComponent dans Awake/Start/OnEnable n'est pas un probleme. Utiliser -B 20 dans Grep pour voir le contexte.
Pattern detecte dans un commentaireFiltrer les lignes qui commencent par // ou sont dans un bloc /​* */. Lire le fichier pour confirmer.
Fichier trop gros pour analyserLire par sections avec offset/​limit. Se concentrer sur les methodes Update, FixedUpdate, LateUpdate.
Le projet n'a pas de dossier Assets/Verifier le path du projet. Demander a l'utilisateur de confirmer la racine du projet Unity.
Score tres eleve sur un prototypeContextualiser : un prototype n'a pas besoin d'optimisation poussee. Mentionner les problemes mais reduire l'urgence.
Anti-pattern dans du code desactiveVerifier s'il y a #if / [System.Obsolete] / commentaire indiquant du code mort. Ne pas reporter le code mort.
Pas de fichiers .cs trouvesLe projet est peut-etre vide ou les scripts sont dans un package. Verifier avec Glob **/​*.cs sans filtre de dossier.
Event leak faux positifVerifier les patterns : si += est dans OnEnable et -= est dans OnDisable, c'est correct. Verifier aussi les lambdas anonymes (impossible a unsubscribe).

Table complete des anti-patterns : voir references/​anti-patterns.md

More skills from JulianKerignard

Unity Debug logo
JulianKerignard/Unity-Skills

Unity Debug

Diagnostic et correction systematique de bugs Unity par analyse de code. Classifie le bug, trace le chemin d'execution, propose un fix avec prevention. Triggers: /unity-debug, /debug, 'bug Unity', 'NullReferenceException', 'crash Unity', 'erreur Unity', 'ne marche pas', 'comportement bizarre', 'M...

7 0
View
Unity UI Toolkit logo
JulianKerignard/Unity-Skills

Unity UI Toolkit

Creation d'interfaces utilisateur avec UI Toolkit (UXML, USS, C# bindings). Genere des ecrans complets avec structure UXML, styling USS et presenter C#. Triggers: /uitk, /ui, 'UI Toolkit', 'UXML', 'USS', 'UIDocument', 'data binding UI', 'runtime UI', 'menu principal', 'HUD', 'interface utilisateu...

7 0
View
Unity Refactor logo
JulianKerignard/Unity-Skills

Unity Refactor

Refactoring incremental et securise de code C# Unity. Detecte les code smells, propose un plan priorise par risque, et execute les changements un par un avec verification de compilation. Triggers: /unity-refactor, 'refactor', 'code smell', 'clean code', 'dette technique', 'refactoring unity'. Pro...

7 0
View
Unity Editor Tools logo
JulianKerignard/Unity-Skills

Unity Editor Tools

Cree des outils custom pour l'editeur Unity : inspectors personnalises, fenetres d'outils, drawers, menu items, wizards et asset processors. Triggers: /unity-editor-tools, /editor, 'custom inspector', 'editor window', 'property drawer', 'menu item', 'editor tool', 'outil editeur'. Produit des scr...

7 0
View
Unity Build & CI/CD Configurator logo
JulianKerignard/Unity-Skills

Unity Build & CI/CD Configurator

Configure le pipeline de build Unity, CI/CD, et deployment. Triggers: /build-config, /ci, /deploy, 'configurer build', 'github actions unity', 'gitlab ci unity', 'gitignore unity', 'build automation'. Scanne le projet, genere les scripts de build C#, les workflows CI/CD, et les fichiers Git optim...

7 0
View
Unity DOTS logo
JulianKerignard/Unity-Skills

Unity DOTS

Data-Oriented Technology Stack (ECS, Job System, Burst). Authoring, baking, systems, queries, jobs paralleles. Triggers: /dots, /ecs, 'DOTS', 'ECS', 'ISystem', 'SystemAPI', 'IJobEntity', 'Burst', 'NativeArray', 'Entity', 'IComponentData', 'data oriented'.

7 0
View
Unity Save System logo
JulianKerignard/Unity-Skills

Unity Save System

Implementer un systeme de sauvegarde et persistence : /unity-save, /save, sauvegarde, save system, persistence, sauvegarder, charger une partie, save game, PlayerPrefs, serialisation, JSON save, cloud save, slot de sauvegarde

7 0
View
Unity Addressables logo
JulianKerignard/Unity-Skills

Unity Addressables

Asset loading et content management avec Addressables. Organisation des groupes, chargement async, memory management, remote content. Triggers: /addressables, /assets, 'Addressables', 'AssetReference', 'chargement async', 'remote content', 'DLC', 'asset bundles', 'Resources.Load migration', 'load...

7 0
View
Unity Code Gen logo
JulianKerignard/Unity-Skills

Unity Code Gen

Generation de code C# Unity production-ready a partir de specifications fonctionnelles. Analyse la codebase existante, choisit le bon pattern architectural, genere le code et les tests. Triggers: /unity-code-gen, 'generer script Unity', 'creer composant', 'nouveau MonoBehaviour', 'creer Scriptabl...

7 0
View
Unity 2D logo
JulianKerignard/Unity-Skills

Unity 2D

Guide complet pour le developpement 2D dans Unity 6+ : Tilemap, Sprite, 2D platformer, top-down 2D, 2D physics, Light2D, Sprite Atlas, pixel art, 2D game, jeu 2D, tile, Rule Tile. Commandes : /unity-2d, /2d

7 0
View
Unity Audio logo
JulianKerignard/Unity-Skills

Unity Audio

Systeme audio complet Unity 6+ : SFX, musique, ambiance, spatialisation 3D, AudioMixer, pooling, Audio Random Container, Scriptable Audio Pipeline. Triggers: /unity-audio, /audio, audio, son, musique, AudioMixer, AudioSource, spatial audio, 3D sound, sound design, SFX

7 0
View
Unity Shader Generator logo
JulianKerignard/Unity-Skills

Unity Shader Generator

Genere des shaders Unity (HLSL/ShaderLab) pour effets visuels. Triggers: /shader, /shader-gen, 'creer un shader', 'effet visuel shader', 'dissolve', 'outline', 'toon shading', 'hologram', 'water shader'. Detecte automatiquement le render pipeline (URP/HDRP/Built-in) et produit un fichier .shader ...

7 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View