Jump to content
Unity Insider Forum

uGUI Draw Order unabhängig von Hierarchy?


Recommended Posts

Moin Leute,

 

kurz und knackig gefragt: Kann man in uGUI die Draw Order der Elemente irgendwie unabhängig von der Rangfolge in der Hierarchy festlegen?

Ich kenne den Workaround mit SetSiblingIndex aber das bringt einem ja nicht wirklich viel wenn man beispielsweise beim Entwickeln die Elemente in der Hierarchie alphabetisch ordnen möchte aber trotzdem auch im Editor die "korrekte" GUI angezeigt bekommen möchte, denn entweder es ist in der Scene-View falsch (weil sich die Elemente uU falsch überlagern) oder die Hierarchy wird ständig aktualisierung und durcheinander gebracht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit nem Screenshot kann ich gerade nicht dienen sry ^^

Und die Z-Koordinate bringt auch nichts das ist richtig..

 

Vielleicht wirds verständlicher wenn ich noch ein paar Metadaten poste:

Bei NGUI kann man durch einen Depth-Value (Inspector Property) festlegen in welcher Reihenfolge die GUI Elemente gezeichnet werden, also wenn ein Element einen größeren Depth-Wert hat liegt es über den Elementen mit einem niedrigeren Depth Wert (oder anders herum? spielt gerade keine Rolle) und wird dementsprechend darüber gezeichnet.

 

In uGUI ist es ja nun so, dass die Reihenfolge in der die Elemente gezeichnet werden von der Hierarchie Reihenfolge festgelegt wird.

Children werden grundsätzlich über ihre Parents gezeichnet und wenn Elemente "Siblings" haben, werden die Geschwister, die in der Hierarchie weiter unten kommen, auch erst später (und damit darüber) gezeichnet.

 

Jetzt wäre die Frage, ob uGUI auch so ein Depth-System wie NGUI bietet bzw. ob es möglich wäre ein solches System selber mit uGUI zu bauen.

Man kann den SiblingIndex setzen und somit die Hierarchie-Ordnung per Code ändern und somit auch die Draw Order verändern.. Wenn ein Element unter allen anderen Siblings in der Hierarchie gesetzt wird, wird es ja auch über alle anderen drüber gezeichnet.

 

Aber angenommen ich möchte jetzt alle Elemente in der Szene Gruppieren und alphabetisch Sortieren, also sowas hier:

- Canvas
  - Buttons
  - Button1
  - Button2
  - ...
  - Labels
  - ...
  - Panels
  - ...

 

Dann werden grundsätzlich alle Panels über sämtliche Labels gezeichnet und die wiederum verdecken alle Buttons

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für einzelne Objekte innerhalb eines Canvas gibt es scheinbar keine Möglichkeit, die Order zu verändern.

Bei den Canvas an sich gibt es das. Du kannst bei einem Canvas die SortOrder mit einer Zahl einstellen. Je höher die Zahl, desto weiter vorne ist der-die-das komplette Canvas.

Hätte also jeder Button sein eigenes Canvas, dann könntest du das schon ordnen.

Ist aber nicht praktisch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das hab ich mir auch schon überlegt aber zum einen ist es total umständlich alles mögliche in ein eigenes Canvas zu wrappen und zum anderen befürchte ich, dass es da vllt nervige Seiteneffekte geben könnte?

 

Naja ist ja auch nicht so schlimm, dann geht's hald nicht ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...