Wattsefakk Geschrieben 14. April 2017 Melden Share Geschrieben 14. April 2017 Ich will ein GameObject als Prefab speichern, das Problem ist das Mesh was in diesem GameObject steckt, wurde vorher per Code generiert und. Ich habe folgenden Code bisher benutzt nur speichert er zwar das GameObject als Prefab nur das Mesh ist null. Wisst ihr da noch eine andere Möglichkeit? UnityEngine.Object prefab = EditorUtility.CreateEmptyPrefab("Assets/test.prefab"); EditorUtility.ReplacePrefab(mesh, prefab, ReplacePrefabOptions.ConnectToPrefab); Damit habe ich es versucht. Funktioniert halt nur nicht. Edit: Habe nun die aktuelle Funktion gefunden und zwar diese hier: public static GameObject CreatePrefab(string path, GameObject go, ReplacePrefabOptions options = ReplacePrefabOptions.Default); Problem bleibt aber bestehen das das Mesh nicht gespeichert wird. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 14. April 2017 Melden Share Geschrieben 14. April 2017 Eine einfache (ohne Skriptcode) Lösung wäre, das Spiel zu stoppen und das GameObjekt per Hand direkt aus der Szene in einen Prefabordner zu ziehen. Wenn du es per Code lösen möchtest, dann könntest du noch einmal versuchen, den Mesh direkt im erzeugten Prefab nachzusetzen. swapMesh = calculatedGameObject.GetComponent<MeshFilter>().mesh; // .. Create Prefab prefab here ... prefab.GetComponent<MeshFilter>().mesh = swapMesh; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wattsefakk Geschrieben 14. April 2017 Autor Melden Share Geschrieben 14. April 2017 Das habe ich zuerst ausprobiert allerdings ist dann das Mesh auch weg da es zur Laufzeit generiert wird Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Life Is Good Geschrieben 14. April 2017 Melden Share Geschrieben 14. April 2017 Du musst auch das Mesh als Asset speichern, da es ansonsten bloß in der Szene lebt und somit, logischerweise, auch nicht über die Szene hinaus verwendbar ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wattsefakk Geschrieben 14. April 2017 Autor Melden Share Geschrieben 14. April 2017 ja genau das will ich tuen nur dann ist das Mesh nicht mehr da... Es wird nicht gespeichert egal ob ich es per code mache oder manuell mit der Hand. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Life Is Good Geschrieben 14. April 2017 Melden Share Geschrieben 14. April 2017 Mesh manuell speichern geht auch nicht. Schau dir mal deinen Inspector in der runtime an. Das Mesh-Feld hat einen Wert (dein Mesh) aber wenn du draufklickst wird das Mesh Asset nicht im Projekt selektiert, weils das nicht gibt. Also musst du das Mesh nocheinmal seperat speichern. Das machst du mit AssetDatabase.CreateAsset. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wattsefakk Geschrieben 14. April 2017 Autor Melden Share Geschrieben 14. April 2017 ah okay danke Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 15. April 2017 Melden Share Geschrieben 15. April 2017 vor 9 Stunden schrieb Wattsefakk: Das habe ich zuerst ausprobiert allerdings ist dann das Mesh auch weg da es zur Laufzeit generiert wird Das sollte aber eigentlich gehen, wenn du den Editor "stoppst" (=Pausebutton), dann ist das Mesh noch da und daher kannst du das Gameobjekt inklusive Mesh auch aus der Szene in den Projektfolder ziehen (und damit wird das Asset samt Mesh automatisch angelegt). Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.