Mes projets

Prefab Fusion - Outil Unity - 2026

Développeur · Ludiven Studio
Unity
Outil éditeur
C#
Prefabs
Asset Store

Un outil pour l'éditeur Unity qui restructure les prefabs : les blocs copiés-collés deviennent un seul prefab imbriqué, les quasi-copies deviennent des variantes, sur place, sans perdre une valeur ni une référence. Bientôt sur l'Unity Asset Store.

Les fenêtres de Prefab Fusion dans l'éditeur Unity — une partie répétée quatre fois, et sa fenêtre d'extraction

Cette page décrit la démarche technique derrière Prefab Fusion. Pour l'outil lui-même — ce qu'il fait, ce qu'il demande, où le trouver — la page de l'outil est faite pour ça.

Le problème

Dans un projet Unity, une interface grandit vite par copier-coller : un bloc dupliqué avec Ctrl+D dans dix écrans, un prefab copié puis retouché au lieu d'en faire une variante. Le jour où ce bloc doit changer, il faut le changer dix fois. Restructurer à la main coûte cher : chaque objet recréé change d'identifiant, et les références des scènes et des autres prefabs qui pointaient vers lui se cassent, overrides compris.

L'approche

Prefab Fusion lit chaque prefab comme un arbre : les objets, leurs composants, et chaque champ sérialisé qui diffère d'un composant neuf. Deux parties ont la même structure quand leurs noms et leurs types de composants concordent, même si leurs textes, leurs couleurs ou leurs sprites diffèrent.

Extraire en prefab imbriqué : une partie devient un prefab à part entière, et les parties de même structure dans les autres prefabs deviennent des instances de ce prefab, leurs propres valeurs gardées en overrides. Faire une variante, sur place : un prefab existant devient une variante d'un autre ; il garde son chemin et son GUID, donc rien de ce qui l'utilise ne casse. Dans les deux cas, les références des scènes, des prefabs et des assets suivent les objets déplacés, overrides compris.

La sécurité d'abord

Un outil qui réécrit des prefabs doit inspirer confiance. Rien ne change avant un aperçu complet. Les fichiers concernés sont sauvegardés, et les dix dernières restructurations s'annulent. Dans un dépôt git, l'outil signale les fichiers aux modifications non commitées. Surtout, après chaque restructuration, chaque valeur de chaque prefab touché est comparée à sa valeur d'avant : le rapport se termine par check: every value is the same as before, ou liste ce qui diffère.

Trouver quoi restructurer

Un scan liste les blocs répétés entre les prefabs d'un dossier, et les paires de prefabs assez proches pour être des variantes. La première version ne comparait que les prefabs de même forme et noyait les bonnes pistes : sur un projet de 284 prefabs, 4 999 suggestions, des objets d'un seul nœud en tête. Or deux nœuds se correspondent quand leurs chemins de noms concordent : le nombre de chemins que partagent deux prefabs borne donc leur score, et ce calcul très léger écarte presque toutes les paires sans espoir avant la comparaison complète. Sur le même projet, le scan propose désormais 88 paires, les vraies quasi-copies en tête, et il va plus de deux fois plus vite.

Tests

Une suite de 53 tests automatisés tourne sans échec sous Windows, sur Unity 2022.3, 6.0, 6.3, 6.4, 6.5 et 6.6. Sur quatre projets réels, 687 prefabs sur 722 reviennent identiques, valeur par valeur, après un aller-retour en JSON ; presque tous les autres utilisent un script absent du projet.

L'outil en images

Fenêtre principale : l'arbre du prefab, la partie Offer marquée ×4 car elle se répète dans le projetExtraction : les quatre copies deviennent des instances du nouveau prefab, chacune garde ses valeurs en overridesVariante sur place : 100 % de structure commune, 5 overrides, un enfant ajoutéScan d'un dossier : les blocs répétés entre prefabs, les plus gros gains en premierScan d'un dossier : SampleCardGold pourrait être une variante de SampleCard