RLe Geschrieben 23. Dezember 2019 Melden Share Geschrieben 23. Dezember 2019 Hallo, liebe Community, ich versuche die ganze gerade, einen 3d-Avatar in Laufzeit zu laden, aber es will einfach nicht hinauen. Mein Code: Resources.Load("3D_Objects/Finja_retopology_head_test"); habe auch schon versucht: Resources.Load("3D_Objects/Finja_retopology_head_test.obj"); Gleichmal: Mein Script wird in Unity aufgerufen. Dessen habe ich mich extra vergewissert. Nun hatte ich die Dokumention in Unity so verstanden, als müsste man alles in einen Ordner namens "Resources" machen, also wie der Quelltext hier: https://docs.unity3d.com/ScriptReference/Resources.Load.html?_ga=2.65254446.1037845241.1577054905-35281293.1572903849 Damit habe ich es dann auch versucht - nichts. Und auch keine Error-Message bei Unity, einfach gar nichts. Habe es auch so versucht: var finja = Resources.Load("3D_Objects/Finja_retopology_head_test"); Wenn ich es einfach so einfüge, klappts ohne Probleme, aber das ist ja nicht mein Ziel. Nehmts mir nicht übel, aber mich regt das einfach auf, wenn sowas einfaches nirgends richtig steht, ich habs ja schon gesucht, finde aber nichts, wie läd man ein 3d-Objekt mit C#? P. S.: Ich sehe, dass die in Unity mit <T> arbeiten. Aber daran kann es meines Wissens nach nicht liegen, oder? Ich schwöre, dass ich bei Google zwar Sachen finde, aber nicht das, was ich suche, ehrlich. Edit: Gelöst. Entschuldigung, falls ich etwas unhöflich rüber gekommen bin, ich hatte nicht gesehen, dass es nicht reicht, es einfach nur laden zu lassen. Hier mein Lösungsweg, für andere Einsteiger: \\Ordner "3D_Objects" in einem Ordner namens "Resources" var finja = Resources.Load("3D_Objects/Finja_retopology_head_test"); Instantiate(finja, new Vector3(0, 0, 0), Quaternion.identity); Funktioniert super! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 24. Dezember 2019 Melden Share Geschrieben 24. Dezember 2019 Resource.Load kann nur Unity bekannte Types laden. .obj oder .fbx bzw models allgemein sind das nicht. Daher mache zu erst daraus ein Prefab und danach kannst du es Laden. EDIT: Muss mich korrigieren. Hab da mist gelabert, weil ich dich falsch verstanden habe. Ein Obj kannst mit Resources laden, wenn du ein Resources Ordner und da rein packst. Danach kannst du so laden GameObject 3dmodelResource = Resource.Load<GameObject>("3dmodel); Instantiate(3dmodelResource); Du muss also angeben, was du lädts, gameobject, mesh, texture usw. Den Pfad gibst du ohne "Resources" an. Also wenn es im Resources/mymodels/avatar.obj ist dann einfach mymodels/avatar eingeben. Ich empfehle das dir aber NICHT! Weil man da auf Speicherprobleme kommen kann. Also mehr Ramspeicher wird benutzt. Es ist besser wenn du aus deinen 3d models einen Prefab machst und dann in deinem Script eine List bzw Array zu machen, und da kannst du all deine Prefabs reinpacken und von da aus laden. Instantiate(mymodels[0]); Das hast du dann nämlich auch im Laufzeit erstellt Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
RLe Geschrieben 25. Dezember 2019 Autor Melden Share Geschrieben 25. Dezember 2019 vor 18 Stunden schrieb MaZy: Resource.Load kann nur Unity bekannte Types laden. .obj oder .fbx bzw models allgemein sind das nicht. Daher mache zu erst daraus ein Prefab und danach kannst du es Laden. EDIT: Muss mich korrigieren. Hab da mist gelabert, weil ich dich falsch verstanden habe. Ein Obj kannst mit Resources laden, wenn du ein Resources Ordner und da rein packst. Danach kannst du so laden GameObject 3dmodelResource = Resource.Load<GameObject>("3dmodel); Instantiate(3dmodelResource); Du muss also angeben, was du lädts, gameobject, mesh, texture usw. Den Pfad gibst du ohne "Resources" an. Also wenn es im Resources/mymodels/avatar.obj ist dann einfach mymodels/avatar eingeben. Ich empfehle das dir aber NICHT! Weil man da auf Speicherprobleme kommen kann. Also mehr Ramspeicher wird benutzt. Es ist besser wenn du aus deinen 3d models einen Prefab machst und dann in deinem Script eine List bzw Array zu machen, und da kannst du all deine Prefabs reinpacken und von da aus laden. Instantiate(mymodels[0]); Das hast du dann nämlich auch im Laufzeit erstellt Ich weiß, is ja auch gelöst. Trotzdem danke für deine Hilfe. Trotzdem muss ich natürlich sagen, dass die Scripting API was das angeht meiner Meinung nach ruhig noch etwas verbessert werden könnte, da es ein bisschen gedauert hat, bis ich es raus hatte. 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.