Jeux, mais aussi applications 3D temps réel hors jeu, déployées sur mobile, sur le Web, sur PC ou sur des casques de réalité virtuelle : les offres de développeur Unity couvrent tout cela. Les questions d'entretien d'un développeur Unity changent donc avec la plateforme cible. Unity 6 est la version courante, avec la 6.3 en support long jusqu'à décembre 2027. Demandez sur quelle version et quel appareil la personne a livré son dernier projet.
Les tutoriels suffisent pour assembler une scène qui marche dans l'éditeur. L'expérience de production se reconnaît à d'autres sujets : les allocations à chaque image et les pics du ramasse-miettes, les Release oubliés dans Addressables, l'objet détruit qui n'est pas un null C#, une mesure faite sur l'appareil plutôt que dans l'éditeur. Un développeur C# venu du back-end maîtrise le langage, mais il doit apprendre le cycle de vie des MonoBehaviour et le budget de 16 ou 33 millisecondes par image.
Selon le poste, ajoutez le rendu (URP ou HDRP), le multijoueur ou DOTS. Le PDF propose 30 questions sur six axes, un cas de 20 minutes et une grille de 1 à 4.
Le moteur et les outils d'un développeur Unity
C# dans Unity (Mono et IL2CPP)
Tout le code de jeu s'écrit en C#. Dans l'éditeur il tourne sous Mono ; dans les builds mobiles et console, il est souvent compilé à l'avance par IL2CPP. Un bon niveau C# ne suffit pas : il faut connaître les allocations qui déclenchent le ramasse-miettes et les limites d'IL2CPP.
MonoBehaviour et cycle de vie
La classe de base des scripts posés sur les objets de la scène. Awake, OnEnable, Start, Update, FixedUpdate et LateUpdate sont appelés par le moteur dans un ordre précis. Beaucoup de bugs viennent d'une initialisation mal placée ou d'un abonnement jamais retiré.
ScriptableObjects et prefabs
Les ScriptableObjects stockent des données dans des assets, partagés entre objets et réglables par les game designers. Les prefabs et leurs variantes sont les modèles d'objets réutilisables. Leur organisation dit beaucoup de la maturité d'un projet.
Addressables
Le système de chargement des assets à la demande, construit sur les AssetBundles. Il permet de charger un niveau, de le libérer et de livrer du contenu à distance. Le piège classique est d'oublier de libérer ce qui a été chargé, ce qui fait grimper la mémoire.
URP et HDRP
Les deux pipelines de rendu de Unity. URP couvre toutes les plateformes, du téléphone au PC ; HDRP vise le haut de gamme sur PC et consoles. Le choix se fait au début du projet, car shaders et matériaux ne passent pas facilement de l'un à l'autre.
DOTS (Entities, Jobs, Burst)
La pile orientée données de Unity : Entities pour l'ECS, le C# Job System pour le calcul parallèle et le compilateur Burst. Elle sert quand des milliers d'objets doivent être simulés. Beaucoup de postes ne la demandent pas, mais un profil qui l'a utilisée en production sait raisonner en données.
Profiler, Memory Profiler et Frame Debugger
Les outils de mesure : temps CPU par fonction et allocations, contenu de la mémoire, étapes du rendu d'une image. Un développeur expérimenté les utilise sur l'appareil cible, pas seulement dans l'éditeur.
Input System, UI Toolkit et uGUI
Le package Input System gère clavier, manette, tactile et contrôleurs XR par des actions. Les interfaces se font avec uGUI, très répandu, ou UI Toolkit, plus récent. Chacun a ses pièges de performance.
Git, tests et build automatique
Les projets Unity se versionnent sous Git avec Git LFS pour les binaires, ou sous Unity Version Control. Le Unity Test Framework lance des tests automatisés, et les builds passent par une CI en mode batch. Ces habitudes distinguent un projet d'équipe d'un prototype.
Le développeur Unity travaille avec des game designers, des artistes 3D et parfois des développeurs back-end. Sur une petite équipe, il couvre tout : gameplay, interface, intégration des assets, builds. Dans une équipe plus grande, il se spécialise sur le gameplay, les outils, le rendu ou le réseau. La plateforme cible fixe les contraintes : mémoire et batterie sur téléphone, taille de téléchargement sur le Web, fréquence d'image stable dans un casque XR. Les offres françaises demandent souvent C#, Unity, une plateforme précise (WebGL, mobile, XR) et parfois des API REST ou WebSocket pour les applications connectées.
Six compétences Unity à couvrir en entretien
- C# et gestion de la mémoire dans Unity
- Architecture des scripts et des données
- Chargement des assets et Addressables
- Rendu et optimisation GPU
- Physique, entrées et boucle de jeu
- Profilage, build et tests
Cinq questions techniques pour un développeur Unity
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
Dans un Update, un collègue a écrit if (target?.gameObject != null). Qu'est-ce qui ne va pas ?
Une bonne réponseLes objets Unity redéfinissent l'opérateur == : un objet détruit côté moteur est considéré comme égal à null, alors que l'objet C# existe encore. Les opérateurs ?. et ?? ne passent pas par cette redéfinition, donc target?.gameObject accède à un objet détruit et lève une MissingReferenceException. La bonne écriture est if (target != null) ou if (target), suivie de l'accès.
Signal d'alerte« C'est plus propre avec ?. » Ne pas savoir qu'un objet Unity détruit n'est pas un null C# ordinaire.
Question 2 · confirmé
Sur mobile, l'application saccade toutes les quelques secondes et le profiler montre des pics de GC.Collect. Comment trouvez-vous la cause ?
Une bonne réponseSur une build de développement lancée sur le téléphone, la colonne GC Alloc du profiler CPU montre qui alloue à chaque image. Les coupables habituels : concaténation de chaînes, LINQ, boxing, lambdas qui capturent des variables, tableaux recréés (GetComponents, Physics.RaycastAll au lieu des versions NonAlloc), Instantiate et Destroy en boucle. Corrections : mise en cache, pools d'objets, StringBuilder, réutilisation des listes. Le ramasse-miettes incrémental lisse les pauses, sans dispenser de réduire les allocations.
Signal d'alerteAppeler GC.Collect soi-même toutes les dix secondes, ou ne profiler que dans l'éditeur.
Question 3 · confirmé
Plusieurs écrans doivent afficher le score et la santé du joueur. Comment partagez-vous ces données sans singletons partout ?
Une bonne réponseDes ScriptableObjects comme conteneurs de données ou canaux d'événements, référencés dans l'inspecteur, des événements C# auxquels les écrans s'abonnent dans OnEnable et se désabonnent dans OnDisable, ou un conteneur d'injection de dépendances si l'équipe en utilise un. La personne connaît le piège : dans l'éditeur, une valeur modifiée en Play mode dans un ScriptableObject reste dans l'asset, alors que dans une build elle repart de sa valeur initiale.
Signal d'alerteFindObjectOfType ou GameObject.Find appelés dans chaque Update, ou un singleton statique par donnée.
Question 4 · senior
Les niveaux sont chargés avec Addressables, et la mémoire augmente à chaque changement de niveau. Où cherchez-vous ?
Une bonne réponseChaque LoadAssetAsync ou InstantiateAsync doit avoir son Release ou son ReleaseInstance : Addressables compte les références, et un bundle reste en mémoire tant qu'un seul de ses assets est retenu. Un Destroy sur une instance créée par Addressables ne libère pas la référence. La personne compare deux captures du Memory Profiler avant et après le changement de niveau, regarde les handles encore ouverts et lance les règles d'analyse pour repérer les dépendances dupliquées entre groupes.
Signal d'alerte« Destroy suffit », ou appeler Resources.UnloadUnusedAssets sans comprendre ce qui retient les assets.
Question 5 · confirmé
Une scène tourne à 30 images par seconde au lieu de 60 sur la machine cible. Comment savez-vous si le problème vient du CPU ou du GPU ?
Une bonne réponseDans le profiler, la personne compare le temps du thread principal, du thread de rendu et du GPU. Un thread principal qui attend Gfx.WaitForPresent ou un marqueur équivalent signale un GPU saturé, à distinguer de l'attente de synchronisation verticale. Le Frame Debugger compte les draw calls et les changements de shader. Baisser la résolution est un test simple : si l'image s'accélère, la charge est côté GPU (pixels, ombres, post-traitements, surdessin). Les outils de la plateforme (Xcode, Android GPU Inspector, RenderDoc) complètent l'analyse.
Signal d'alerte« Je baisse la qualité partout » sans mesure, ou optimiser des scripts alors que le GPU est saturé.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Développeur Unity : ce que les recruteurs demandent souvent
Quelles compétences demander à un développeur Unity ?
Un bon niveau de C#, la maîtrise du cycle de vie des MonoBehaviour, des prefabs et des ScriptableObjects, la gestion de la mémoire (allocations, Addressables) et l'usage du profiler sur l'appareil cible. Selon le poste, ajoutez le rendu URP ou HDRP et les shaders, la physique, le multijoueur, la XR ou le Web. Le travail en équipe sous Git avec des scènes partagées compte aussi dès que le projet dépasse deux développeurs.
Un développeur C# .NET peut-il devenir développeur Unity ?
Le langage est le même, et c'est un vrai avantage. Il lui manque en général le fonctionnement du moteur : cycle de vie des scripts, boucle de jeu, physique, budget par image, allocations à éviter dans Update, différences entre éditeur et build. Posez-lui la question de l'objet détruit et celle des pics de ramasse-miettes. Avec un projet personnel livré, même petit, la transition se fait plus vite.
Faut-il exiger DOTS pour un poste Unity ?
Seulement si le projet simule un très grand nombre d'objets ou si l'équipe l'utilise déjà. La plupart des projets Unity reposent sur les GameObjects et les MonoBehaviour. Exiger DOTS réduit fortement le vivier de candidats. Mieux vaut vérifier que la personne raisonne en données et connaît le Job System et Burst, puis former sur Entities si le besoin apparaît.
Quel test technique pour un développeur Unity ?
Un petit projet existant à corriger en une heure ou deux vaut mieux qu'un jeu à créer chez soi. Glissez-y une allocation dans Update, un abonnement jamais retiré, un objet déplacé par son transform qui traverse un mur. La personne commente son profiler et ses choix à voix haute. Pour un senior, ajoutez la discussion d'un portage sur mobile ou sur le Web.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.




