Smart Ersatz ist ein Unity-Plug-In, mit dem Sie defekte Prefab-Links wiederherstellen können. Darüber hinaus kann es auch Vorfaber in der Szene durch ähnliche Vorfaber ersetzen, die dieselben Skripte enthalten, ohne Änderungen oder Objektreferenzen zu verlieren.
Um das Plugin zu verwenden, muss die Corrent .NET -Version für Ihr Projekt festgelegt werden. Andernfalls wird es nicht kompilieren . Sie können die .NET -Version über: File -> Build settings -> Other settings -> Configuration -> Scripting Runtime Version -> .NET 4.x Equivalent
Nachdem Sie das Paket heruntergeladen und installiert haben, können Sie das Smart -Ersatz -Fenster öffnen, indem Sie zu Tools -> Replace prefab...
Die folgenden Beispiele zeigen die Hauptanwendungsfälle des Plugins. Es gibt auch ein Video auf YouTube, das das Plugin lebhafter erklärt.

Um restore a prefab link , ziehen Sie zuerst das Szenenobjekt in das entsprechende Feld des Fensters. Finden Sie als nächstes das ursprüngliche Präfababa im Einheitsprojektfenster und lassen Sie es auf das fresh prefab -Feld fallen.
Unter Transfer component values können Sie alle Komponenten auswählen, die möglicherweise Änderungen haben, die Sie erhalten möchten. Einstellungen von Einheitskomponenten werden derzeit nicht unterstützt, mit Ausnahme der transform .
Nachdem diese Einstellungen vorgenommen wurden, können Sie Replace treffen und der Prefab -Link wird wiederhergestellt, ohne die Änderungen zu verlieren, die Sie an Ihrem Objekt in der Szene vorgenommen haben.
In der Spieleentwicklung werden häufig Dummy -Prefabs erstellt, um eine bestimmte Funktionalität eines Spiels zu testen. In den späteren Phasen der Spielentwicklung wird eine bessere Version dieser Schaltfläche erstellt - mit schöneren Modellen, Texturen, Shadern usw.
Wenn Sie also nur ein Level mit den Dummy -Prefabs haben, aber alle durch Ihre neue, bessere Version ersetzen möchten, kann Smart.replace Ihnen helfen.
Die Beispielbilder unten zeigen eine Szene mit einem Knopf und einer Tür. Die Schaltfläche verfügt über ein Skript mit dem Namen Button Click ", das einen Verweis auf das Türobjekt enthält, damit es beim Klicken die Tür öffnen oder schließen kann.

Es gibt auch einen weiteren Schaltfläche Prefab, wie Sie in der Projektansicht sehen können, die als Button 1 bezeichnet wird. Es sieht etwas anders aus, enthält aber auch die ButtonClick -Komponente und kann daher wie unser aktueller Taste verwendet werden. Dies ist ein guter Kandidat für den Austausch. Daher lassen wir unser Szenenobjekt zuerst in das Smart. -Replace -Fenster fallen, dann stellen wir sicher, dass die Türreferenz nach dem Ersatz beibehalten wird und dann ersetzen wir replace .

Der Knopf wurde erfolgreich ersetzt und hat immer noch den Hinweis auf die Tür, so dass er immer noch funktioniert!
Genau so können alle Einstellungen aller Komponenten während des Austauschs beibehalten werden, wie integer , colors , strings usw.
Das Fresh prefab muss nicht die gleiche Objekthierarchie wie das scene object haben, da Smart.replace nur um den Schnittpunkt von Komponenten sorgt (siehe Einschränkungen für weitere Informationen).
Wie wäre es, wenn wir die Tür jetzt ersetzen? Dies scheint etwas schwierig zu sein, da die Tür jetzt nicht vom Knopf verwiesen wird. Smart.Replace tut jedoch, wenn Sie die Option Transfer external references aktivieren.
Der Prozess ist wieder der gleiche. Wir wählen zuerst das Szenenobjekt und dann das Prefab aus. Wieder drängten wir Ersatz und die Tür wird durch ein weiteres Prefab ersetzt. Gleichzeitig wird der Verweis der Tür auf die Tür aktualisiert.
Smart.Replace sucht nach externen object und component auf das ersetztes Objekt. Es werden sogar lists und arrays nach möglichen Referenzen durchsucht und sie wie beschrieben aktualisieren.
Wenn Sie ähnliche Objekte in der Szene haben, die Sie ersetzen möchten, wäre es mühsam, dies nacheinander zu tun.
Smart.Replace bietet die Suche nach ähnlichen Objekten, sodass wir eine beliebige Anzahl von Objekten gleichzeitig ersetzen können. Zuerst wählen wir eines der Objekte in der Szene und dann in einem Präfababa aus - so können wir nach ähnlichen Objekten suchen. Standardmäßig gibt es keine Filter, sodass alle Objekte in der Szene angezeigt werden. Die Suche nach Namen ist in Fällen, in denen alle Objekte ähnliche Namen haben, sehr effizient. Sie können auch nach Komponenten suchen.
Wenn wir jetzt Ersatz treffen, sehen wir, dass alle Objekte gleichzeitig ersetzt werden. Wenn sie Referenzen aufeinander hätten, wären sie auch erhalten worden.
Um das Plug-in einfach zu verwenden, hat es einige Einschränkungen, die Sie kennen sollten:
component intersection Einheitskomponenten zum Vollständigkeitsgründen zeigt, können ihre Werte derzeit nicht beibehalten werden. Die einzige Ausnahme ist die transform mit eigener Benutzeroberfläche (siehe unten).one component type per object begrenzt. Wenn Sie mehrere Komponenten desselben Typs in Ihrem Szenenobjekt haben, werden nur die ersten Werte beibehalten. Der Rest wird verworfen.object werden beibehalten. Externe Objektreferenzen verweisen jedoch nach dem Ersatz immer auf das parent Objekt. Sie können mich jederzeit unter [email protected] kontaktieren.