Jump to content
Unity Insider Forum

Prefabs werden in Vorschau nicht angezeigt


Mino1337

Recommended Posts

Hallo,

ich versuche gerade per script Prefabs in meine Szene einzublenden. Die Prefabs die ich erstellt habe werden aber nicht angezeigt.

Ich habe zum Test ein Prefab einfach so in die Szene gezogen das ich es im Editor sehen konnte aber als ich auf den Abspielen-Pfeil drückte sah ich nur die Grafiken von meinen Buttons die ebenfalls in der Szene sind.

Ich habe auch versucht die Z Koordinate höher zu stellen (2D Szene) aber das Ergebnis war das selbe.

Hat diese Testfunktion in unity nen Fehler oder hab ich eine Einstellung übersehen ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe deinen rat befolgt und es hat sich leider nichts geändert.

Was interessant ist, ist das wenn ich auf Pause gehe das vom Script erzeugte Prefab im Editor an seiner Position die es haben soll erschienen ist. Nur in der Ansicht ist es nicht zu finden. Ich hab mein Recources-Ordner mal hochgeladen falls das was hilft und du Zeit hast dir das mal anzusehen =).

Resources.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur so nebenbei... Du möchtest nicht einfach dein ganzes Spiel in den Resources-Ordner packen. Genau genommen willst du gar nichts in den Resources-Ordner packen, bis du dir in Ruhe angeschaut hast, was der macht ;)

Als nächstes solltest du solche PAkete als Unitypackage erstellen (Rechtsklick in den Assets), damit die Metadateien dabei sind, ohne die geht einiges kaputt. Ich konnte deine Szene nicht reparieren, weil nicht klar war, wie sie vorher ausgesehen haben könnte.

Aufgefallen ist mir diese Zeile:

Instantiate(prefab, prefab.transform.position, Quaternion.identity);

Warum willst du die Position des Prefabs für die neue Instanz übernehmen? Wenn du ein Objekt in deine Szene instanziierst, willst du eigentlich eine neue Position aussuchen, je nach Situation. Wenn du zum Beispiel statt "prefab.transform.position" einfach "Vector3.zero" schreibst, dann kannst du das Objekt wunderbar sehen.

Ein Denkfehler, den ich außerdem vermute, liegt im Unterschied zwischen Canvas und World Space. Markiere mal deine Kamera und drücke F. Dann schaue dir an, wie die Ecke aussieht: Deine Kamera sitzt auf 0,0,-10 und schaut nach vorne, und zwar mit einer orthographic size von etwa 6,8 (warum auch immer). Das heißt, dass die Kamera ein Feld von 24,2 x 13,6 Einheiten (Metern) in Breite x Höhe abdeckt, wenn dein Bild ein Seitenverhältnis von 16:9 haben sollte. In diesem Bereich sieht man SpriteRenderer und andere Dinge. Dein Canvas allerdings ist viel größer, da eine Einheit dort erstmal einem Pixel entspricht.

Der Canvas ist für UI ausgelegt. Also für Informationen über das Spiel, die nicht Teil der Welt sind, sondern immer sichtbar, egal wo man die Kamera hinbewegt. Es gibt andere Anwendungsfälle, aber die lassen wir mal außen vor. Um etwas im Canvas anzuzeigen, wie Punkte oder eine Lebensanzeige, muss man bestimmte Komponenten benutzen, die auch im Canvas Zeichnen - etwa Image oder Text. Deine Ziffernprefabs benutzen einen SpriteRenderer. Dieser wird im World Space gezeichnet, sodass entweder das Objekt selbst oder die Kamera so positioniert sein müssen, dass die Kamera das Objekt sehen kann. Ich nehme stark an, dass du Dinge im UI anzeigen lassen willst. Daher solltest du auf Text oder Image wechseln, und die Objekte beim Instanziieren dem Canvas unterordnen, sonst werden sie nicht gezeichnet.

Allerdings ist das nicht unbedingt ein Fall, wo ich überhaupt viel mit Instantiate arbeiten wollen würde. Hier ist ein Thema, das dazu relevant sein könnte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh, ich dachte es ist so einfach mit den Projekten teilen =D.

Also, das ganze soll ein 2D Handyspiel werden und die Sache mit den Prefabs hast du mir erklärt vor ca. einem halben Jahr =D. Ich hatte das so verstanden das ich mir mein GameObject inklusive Ort zusammenbaue und dann Kopiere, was für meinen Fall ja auch passt weil die Ziffern immer an der selben Stelle erscheinen sollen nur eben nicht zur selben Zeit. Das ganze wird ein Multiple Choice Mathespiel für das Handy oder Tablet um die Malfolgen zu lernen für Kinder.

Jetzt hast du mir wieder viel Stichpunkte zum nachlesen gegeben =D. Da muss ich mich erstmal durcharbeiten.

Ich kann das "Vector3" ja auch im 2D zusammenhang benutzen wenn ich z=0 belasse oder gibs für Sprites ein extrabefehl oO ?

Ich hab meine Szene nochmal professionell hochgeladen falls interesse besteht =D.

Danke auf jedenfall schonmal für deine bisherigen Tipps =).

 

Testspiel.unitypackage

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 51 Minuten schrieb Mino1337:

Ich kann das "Vector3" ja auch im 2D zusammenhang benutzen wenn ich z=0 belasse oder gibs für Sprites ein extrabefehl oO ?

In Unity sind auch 2D-Spiele in einer 3D-Welt. Deshalb haben GameObejcts mit SpriteRenderer auch eine ganz normale Transform-Komponente mit dreidimensionalem Positionsvektor. In den allermeisten Fällen kann man z in der Tat einfach auf 0 lassen und mit Sorting Layers arbeiten, um zu definieren, welcher Sprite vor welchem ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...