Jump to content
Unity Insider Forum

Elemente anordnen


Recommended Posts

Hallo Leute,

ich habe da mal eine Frage, wie kann ich Buttons, images , Textfelder... vernuenftig anordnen? Dabei geht es weniger um die X,Y Achse sondern eher darum was im Vordergrund und Hintegrund ist. Ich habe irgendwo gelesen das es auf die Hierarchy der Objekte ankommt. Das funktioniert bei mir aber nicht. Gibt es noch einen anderen Weg einfach einzustellen welches Objekt vor dem anderen liegt? Vielleicht ein bestimmtes Component?

 

Ich bin dankbar fuer jede Hilfe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit der Hierachie funktioniert einwandfrei. Garantiert auch bei dir.
Alles was innerhalb einens Canvas ist, wird von hinten nach vorne gezeichnet. Also ist das oberte Element im Hierachiebaum ganz hinten, und das nächste eine Ebene drüber, usw....

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

mhh okay kann es sein das bestimmte Components diese Reihenfolge veraendern? Ich habe zum Beispiel ein Sprite das ich als Character benutze und das soll natuerlich hinter aufgerufende Menues laufen aber es ist immer davor egal wie weit ich den character nach oben in der hierarchie packe. Auch bei einzelnen anderen Elementen hab ich das Problem. Z.b habe ich eine Healtbar und an beiden enden ein Emote . Die Healtbar is an der richtigen Position die Emotes jedoch nicht. Deshalb hatte ich gehofft das es vielleicht noch einen anderen schoeneren Weg gibt.Auch weil ich dachte ich koennte die Hierarchie so anlegen das sie uebersichtlich ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Versteh ich nicht... das sind doch jetzt unterschiedliche Dinge.
Ein Sprite ist ein Gameobject in der Welt. Ein Canvas ist nur dann ein Object in der Welt, wenn du es in Inspector auf WorldSpace schaltest. Das macht man aber eigentlich nur bei 3D Games, wo UI Anzeigen auf 3D Objekten projeziert sein sollen. Ansonsten ist die UI immer über allen anderen Dingen.
Ist denn dein Canvas für die UI Anzeigen auf ScreenSpaceOverlay geschaltet? Wenn ja, kann das Sprite nie davor liegen.

Zeig doch mal einen Screenshot.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab rausgefunden das es bei meinem Sprite daran lag das ich es mit .transform bewegt habe und dafuer ein Vector2 benutzt habe und nicht Vector3. Dadurch wurde die Z achse auf -3300 gesetzt. Deshalb war es immer im Vordergrund.Ich habe das gleiche Problem auch noch mit anderen Elementen ich werde erstmal gucken ob ich selber herausfinde woran es liegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Hey tut mir leid das ich den Thread nochmal aufmachen muss aber irgendwie funktioniert es nicht so wirklich bei mir. Ich habe einige Sprites und einige Buttons zum Beispiel. Das Problem ist das ich die Sprites mit dem SpriteRenderer sortiere. Die Buttons haben aber keinen SpriteRenderer, wie kann ich also ALLE  Arten von Objecten zusammen  anorndnen in der Z Achse?

Einige Buttons müssen zum Beispiel zwischen zwei Sprites angezeigt werden. Andere wiederum müssen nach ganz vorne in den Vordergrund.

 

Es wäre super wenn mir da jemand helfen könnte

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Ich hoffe das dies dir weiterhilft.

Render Modes

Die wichtigste Eigenschaft des Canvas ist der Render Mode.Dieser legt fest, auf welche weise bzw. von wem der Canvas mit all seinen Objekten gerendert werden soll.

Screen Space - Overlay

Dies ist die Standarteinstellung.Der Canvas passt sich der Größe des aktuellen Bildschirms an und wird mit seinen Objekten über das normale Kamerabild gelegt.Hast du mehrere Canvas mit dieser Einstellung in einer Szene, kannst du über den Parameter Sort Order festlegen, in welcher Reihenfolge die Canvas gezeichnet werden und welche Objekte im Vordergrund stehen sollen.

Screen Space - Camera

In diesem Modus passen sich die Maße des Canvas ebenfalls dem Bildschirm an.Allerdings verhält sich der Canvas so, als wenn dieser auf eine Plane Projiziert wird, dessen Entfernung zur Kamera über den Parameter Plane Distance festgelegt wird. Die Kamera, sowohl als Ausgangspunkt genommen werden soll als auch die tatsächliche Darstellung des Canvas übernimmt, weist du der Eigenschaft Render Camera zu. Aus diesem Grund haben auch die Kameraeinstellungen Einfluss auf die Visualisierung der GUI-Objekte. Wenn der Projection-Modus der Kamera z.B auf -Perspective- steht, kannst du nun auch die GUI-Controls mit räumlicher Tiefe darstellen, was im Overlay Modus nicht geht.

World Space

Der Modus -World Space- lässt den Canvas als normales GameObject innerhalb einer Szene nutzen. So kann man es skalieren, drehen und in der Szene platzieren. Willst du Buttons oder andere interaktive Controls auf diese Weise in der Szene platzieren, beachte hierbei, das du dem Canvas-Parameter -Event Camera- die Kamera zuweist die das Bild rendert.

 

Quelle: "Spiele Entwickeln Mit UNITY 5; Hanser Verlag" Autor: Carsten Seifert.

 

Gruß Jog

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vom was redest nun? Transforms oder Rectransform (also Spielobjekte oder UIobjekte). Je nach dem wird nach Hierarchy, Z-Achse, Render Order, oder Layer sortiert.

Am 10.9.2019 um 00:07 schrieb Strooja0108:

Einige Buttons müssen zum Beispiel zwischen zwei Sprites angezeigt werden. Andere wiederum müssen nach ganz vorne in den Vordergrund.

1. SpriteRenderer oder Sprites gibt es in UI gar nicht einfach so. Es gibt Image und ImageRaw, wo man Sprites oder Texturen zu weisen kann, denn die SpriteRenderer selbst benutzen Sprites aus dem Assetordner. Du hast vllt SpriteRenderer (das GameObject) da einfach rein geschoben, anders kann ich mir das nicht erklären. Das heißt du kannst dafür Images benutzen. Deswegen gibt es da keine Orders in den Components. Man benutzt dafür die Hierarchy wie Malzbie schon geschrieben hat.

2. Du muss deutlicher werden. Man kann nicht nachvollziehen, weil du davon ausgehst, dass wir es schon verstehen. Deswegen hat schon Malzbie auch nicht verstanden und mir geht es gerade genauso. Du scheinst, aber etwas zu verwechseln und gehst halt mit den Gedanken weiter. Ist jetzt nur meine Vermutung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...