Jump to content
Unity Insider Forum

Prefab übernimmt nicht alle Dinge aus dem eigentlichen Objekt?


AniProGuy2

Recommended Posts

Hallo Community,

Ich habe mal wieder ein Problem ^^

Und zwar habe ich als meinen Spieler als ein Pregab. Er besteht aus dem Mesh und der Armature (aus einer .fbx) und dazu noch aus ein paar Emptys, die ich in Unity hinzugefügt habe.

Nun ist es so, dass ich an dem Objekt noch ein paar Dinge ändern will, und es dann neu in Unity importieren muss. So will ich z.B. die Augenbrauen des Spielers als seperates Objekt machen (es war vorher eben ein Objekt) und ich brauche auch ein paar "Extra Transforms" für die Dinge, die er halten soll. Wenn ich aber in blender die Augenbrauen seperiere und es dann neu exportiere (und dann die .fbx im Unityordner damit überschreibe), dann fehlen bei dem Prefab die Augenbrauen einfach und sind nicht als einzelnes Mesh vorhanden. Bei dem importierten Objekt stimmt alles, aber bei dem Prefab eben nicht.

Ähnlich ist es auch, wenn ich die Extra Transforms in Unity hinzufüge, die fehlen dann bei dem Prefab auch.

 

Wisst ihr, wie ich das machen kann? Bzw. ist das ein Fehler in Unity oder soll das auch gar nicht funktionieren?

 

Ich muss nunmal leider immer wieder kleinere Änderungen an dem Model vornehmen und daher muss ich auch häufiger neu imporieren. Aber ich will eben nicht jedes mal aufs neue das Prefab zusammenbauen müssen, weil das einfach ewig dauert.

 

Ich bin dankbar für jede Hilfe!

MfG,

AniProGuy2

Link zu diesem Kommentar
Auf anderen Seiten teilen

Als Tipp:

 

Vergiss das mit dem Importieren ! Erstell dir dein Unity Projekt wenn du es nicht schon gemacht hast und Speichere dir deine Modelle DIREKT in dein Unity Projekt. Wenn du an deinem Modell etwas ändern willst dann ändere es in deinem 3D Programm und über speichere dann das FBX in deinem Unity Projekt Folder wieder.

 

Ich lege mir immer gleich nach Projekt Erstellung über den Explorer einen Asset und Textur Ordner und dann wird immer alles dort reingespeichert. Da ich Maya verwende kann ich alle Outsputs dann auch auf den Unity Asset Ordner einstellen. speichere etwas in Maya so möchte Maya das Asset automatisch im Unity Projekt speichern. Das ist sehr praktisch :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein Prefab ist ja quasi ein "eingeforenes" Musterszenenobjekt und ich denke es ist leider "normal", daß man es aktualisieren muss, wenn man an den Projektassets etwas verändert. Es hat eben alles Vor- und Nachteile, anderseits möchte ich ja auch nicht, daß sich ein Prefab ständig "wandelt" und solange du die Verbindung zwischen Prefab und einem Szenenobjekt nicht gebrochen hast, musst du "nur" das Prefab aktualisieren und das Szenenobject übernimmt diese Änderungen automatisch in der Szene.

 

Hier noch eine interessante Diskussion über dein Problem, es scheint auch etwas damit zu tun zu haben, daß eine automatische Aktualisierung des Prefabs nur in manchen Fällen klappt und beim Hinzufügen von Submeshen oder einer geänderten Reihenfolge der Submeshes z.b. nicht mehr (der sichere Weg ist also immer noch das Prefab von Hand zu "aktualisieren", d.h. den extern geänderten Mesh aus dem Projektfolder erneut aufs Prefab ziehen):

https://forum.unity3...changed.318201/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort!

 

Eigentlich mache ich das ja. Also ich habe die .fbx und dort füge ich jetzt z.B. Extra Transforms hinzu. Dann sind die dort zwar vorhanden aber bei dem Prefab nicht (weder bei dem im Ordner noch bei dem in der Szene). Und das ist ja das Problem, falls das aus meiner Frage nicht hervorgegangen ist. Wenn das Prefab aber auf die .fbx zugreift, dann müsste das doch übernommen werden, oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im "Prinzip" ja, aber vermutlich hat Unity ein Problem damit, wenn neue Meshanteile hinzukommen oder Teile verschoben werden, d.h. dies stört oder unterbricht dann den automatischen Aktualisierungsprozess des Meshes im Prefab (Unity aktualisiert dann nur die zuvor schon vorhandenen Meshanteile). Um hier sicher zu gehen, einfach den geänderten Mesh aus dem Projektfolder erneut ins Prefab ziehen, dies sollte den Mesh im Prefab dann vollständig aktualisieren und damit auch das Szenenobjekt, das aus dem Prefab erstellt wurde (insofern die Verbindung zwischen Prefab und Szenenobjekt nicht zuvor schon gebrochen wurde)

 

In deinem konkreten Fall, hast du aus dem Mesh ja die Augenbrauen entfernt und die Augenbrauen als neuen Mesh hinzugefügt. Unity aktualisiert nun den bekannten Mesh im Projektfolder und im Prefab und entfernt dadurch die Augenbrauen. Den von dir neu hinzugefügten Mesh berücksichtigt es zwar im Assetfolder (nach dem Import von Unity), aber die Prefab bekommt davon nichts mit und das Augenbrauenmesh fehlt dann in der Prefab.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, also ich habe die .fbx mal von der Szene ins Prefab gezogen aber da löscht es ja alles raus und das ist im Prinzip dasselbe wie neu machen ^^

 

Ich mache mal eine Ablaufliste:

1) Du editierst dein Mesh z.b in Blender.

2) Dann speicherst du es auf deiner Festplatte, am besten schon in dem Assetfolder von deinem Unityprojekt oder du kopierst es nachträglich dorthin.

3) Unity importiert nun dein FBX in Unity.

4) Du nimmst deine FBX-Meshes aus dem Projektfolder und ziehst sie mit der Maus auf dein Prefab, welches auch im Projektfolder liegt. Dadurch werden deine alten Meshes in deiner Prefab ersetzt.

5) Die Szenenobjekte. die du aus diesem Prefab erstellt hast, sollten nun automatisch aktualisiert werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bin mir nicht sicher aber ich glaube wenn man im Projekt Folder einen rechtsklick auf das Prefab macht konnte man dort auf refresh oder reimport etc klicken.

 

Es gab außerdem auch eine refresh all möglichkeit ich könnte mir vorstellen das spätestens die dein Problem löst.

Im Prinzip ist ein Prefab auch nur eine Instanz von dem Objekt das in deinem Projekt Folder liegt. Wenn aber warum auch immer nicht versteht das ich was geändert hat dann hast du genau das Problem.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...