Smart Replace est un plug-in d'unité qui vous aide à restaurer des liens préfabriqués cassés. En outre, il peut également remplacer les préfabs dans la scène par des préfabs similaires qui contiennent les mêmes scripts sans perdre de modifications ou de références d'objet.
Afin d'utiliser le plugin, la version Corrent .NET doit être définie pour votre projet. Sinon, il ne compilera pas . Vous pouvez modifier la version .NET via: File -> Build settings -> Other settings -> Configuration -> Scripting Runtime Version -> .NET 4.x Equivalent
Après avoir téléchargé et installé le package, vous pouvez ouvrir la fenêtre Smart Remplacer en naviguant vers Tools -> Replace prefab...
Les exemples suivants montreront les principaux cas d'utilisation du plugin. Il y a aussi une vidéo sur YouTube qui explique le plugin plus vivement.

Afin de restore a prefab link d'un objet de scène, faites glisser d'abord l'objet de scène dans le champ correspondant de la fenêtre. Trouvez ensuite le préfabriqué d'origine dans la fenêtre du projet Unity et déposez-le sur le champ fresh prefab .
Dans le cadre Transfer component values vous pouvez sélectionner tous les composants qui peuvent avoir des modifications que vous souhaitez préserver. Les paramètres des composants d'unité ne sont actuellement pas pris en charge, à l'exception des valeurs transform .
Une fois ces paramètres effectués, vous pouvez appuyer sur Replace et le lien préfabriqué sera restauré sans perdre les modifications que vous avez apportées à votre objet dans la scène.
Souvent dans le développement de jeux, des préfabriqués factice sont créés pour tester une fonctionnalité particulière d'un jeu Elemt. Dans les étapes ultérieures du développement de jeux, une meilleure version de ce bouton sera créée - avec des modèles, des textures, des shaders, etc.
Donc, si vous avez un niveau avec uniquement les préfabriqués factice, mais que vous souhaitez les remplacer tous par votre nouvelle version meilleure, Smart.replace peut vous aider.
L'exemple d'images ci-dessous montre une scène avec un bouton et une porte. Le bouton a un script appelé Button Click qui contient une référence à l'objet de porte, afin qu'il puisse ouvrir ou fermer la porte lors du clic.

Il y a aussi un autre bouton préfabriqué, comme vous pouvez le voir dans la vue du projet, appelé Button 1 . Il semble un peu différent, mais contient également le composant ButtonClick et peut donc être utilisé comme notre bouton actuel. Il s'agit d'un bon candidat pour le remplacement, donc nous déposez d'abord notre objet de scène dans la fenêtre Smart.Place, puis le meilleur bouton préfabriqué, assurez-vous que la référence de la porte sera maintenue après le remplacement, puis nous appuyons sur replace .

Le bouton a été remplacé avec succès et a toujours la référence à la porte, donc il fonctionne toujours!
Juste comme cela, tous les paramètres de tous les composants peuvent être maintenus pendant le remplacement, comme les valeurs integer , colors , strings , etc.
Le Fresh prefab n'a pas besoin d'avoir la même hiérarchie d'objets que l' scene object puisque Smart.replace ne s'occupe que de l'intersection des composants (voir Limitations pour plus d'informations).
Et si nous remplacez la porte maintenant? Cela semble un peu délicat, car la porte n'est pas maintenant référencée par le bouton. Cependant, Smart.replace fait, lorsque vous activez l'option Transfer external references .
Le processus est à nouveau le même. Nous sélectionnons d'abord l'objet de scène puis le préfab. Encore une fois, nous frappons le remplacement et la porte sera remplacée par un autre préfabriqué. En même temps, la référence du bouton à la porte sera mise à jour.
Smart.replace recherchera des références object et component externes à l'objet remplacé. Il recherchera même lists et arrays pour des références possibles et les mettra à jour comme décrit.
Si vous avez mutiler des objets similaires dans la scène que vous souhaitez remplacer, il serait fastidieux de le faire un par un.
Smart.replace propose la recherche d'objets similaires, afin que nous puissions remplacer n'importe quel nombre d'objets à la fois. Nous sélectionnons d'abord l'un des objets de la scène, puis un préfabriqué - afin que nous puissions rechercher des objets similaires. Par défaut, il n'y a pas de filtres, donc tous les objets de la scène sont affichés. La recherche par son nom est très efficace dans les cas où tous les objets ont des noms similaires. Vous pouvez également rechercher des composants.
Si nous appuyons maintenant sur Remplace, nous voyons que tous les objets sont remplacés en même temps. S'ils avaient des références les uns sur les autres, ils auraient également été conservés.
Afin de rendre le plug-in facile à utiliser, il a certaines limites que vous devez connaître:
component intersection montre des composants d'unité pour un souci d'exhaustivité, leurs valeurs ne peuvent actuellement pas être maintenues. La seule exception est le composant transform qui a sa propre interface utilisateur (voir ci-dessous).one component type per object . Si vous avez plusieurs composants du même type sur l'objet de votre scène, seules les valeurs de la première seront maintenues. Le reste sera jeté.object remplacé seront maintenues. Cependant, les références d'objets externes pointent toujours vers l'objet parent après le remplacement. Vous pouvez me contacter à tout moment à [email protected].