Jump to content
Unity Insider Forum

Recommended Posts

Hi,

ich möchte gerne mit dem neuen UI-System eine SelectionList erstellen. Diese soll mit Strings gefüllt werden, z.B(als Liste).: Strecke 1, Strecke 2 usw.

 

Kann mir jemand erklären oder nen Link schicken wie das mit der neuen UI geht?

 

Danke schon mal

 

MfG Felix

Share this post


Link to post
Share on other sites

Ohhhh ja, da hab ich auch lange dran gesessen :D

Erstmal sollte gesagt sein das die neue UI ja alle Objekte als GameObjects behandelt.

 

Ich mache dies immer über das Layout system:

 

Erstelle Canvas

-> Panel (Für die Liste)

--> Scroll Rect (Um die Liste auch durchscrollen zu können ansonsten weglassen)

---> Button (Dein Listenelement zum anklicken)

 

In das Panel fügst du nun unter AddComponent im Inspektor unter Layout eine Vertical Layout Group hinzu.

Dem Scroll Rect und dem Button gibst du ein Layout Element. (Dort kannst du dann verschiedene Einstellungen zum verhalten innerhalb der LayoutGroup vornehmen)

 

Den Button speicherst du als Prefab und instanzierst ihn dann einfach in den ScrollRect (wenn es denn einen Gibt ansonsten ins Panel). Somit sollten sie sich säuberlich untereinander anordnen :)

 

Gruß Neoxit

 

EDIT:

Instanzierst am besten die Buttons über eine Liste die du dir vorher erstellt hast. :)

Share this post


Link to post
Share on other sites

Hi,

erstmal Danke für deine Antwort. So ähnlich habe ich das schon gemacht in den kleinen Editor den ich gebastelt habe. Da gehts aber, da keine Elemente zur Laufzeit hinzukommen.

 

Werde es mit der alten UI machen müssen. Die Länge der Liste muss dynamisch sein. Sie wird quasi mit Informationen gefüllt die von einem Server kommen. Mal schauen, das Design der Liste kann man auch optisch anpassen das es zu den restlichen Elementen passt. Nützt ja nix :D .

 

Danke nochmal.

 

MfG Felix

Share this post


Link to post
Share on other sites

Die Länge der Liste kann doch auch dynamisch sein, oder so lang wie du willst falls du das damit meinst :)

 

Deswegen ja der ScrollRect.

 

Und diese Informationen hinzuzufügen ist dann doch kein Problem!

 

Oder rede ich gerade an dir vorbei? ^^

 

Gruß Neoxit

Share this post


Link to post
Share on other sites

Hi,

nein wir reden nicht einander vorbei :-)

 

Ich werde es erstmal so ansetzten wie Du es vorschlägst.

Mir gehts halt auch bissl darum wie viel Leistung das Fressen könnte. Wird nicht viel sein, aber von der Logik ist die alte Selectionlist schon mal geringer. Wenn ich halt 1000 Einträge habe, kann ich die dort als String behandeln. Mit der neuen UI zusätzlich noch Buttons als GameObject.

 

 

MfG Felix

  • Like 1

Share this post


Link to post
Share on other sites
Da gehts aber, da keine Elemente zur Laufzeit hinzukommen. Werde es mit der alten UI machen müssen. Die Länge der Liste muss dynamisch sein. Sie wird quasi mit Informationen gefüllt die von einem Server kommen.

 

Nicht aufgeben - ich lad dir gerade ein kleines Tutorial hoch ;-)

Share this post


Link to post
Share on other sites

Der Upload dauert noch ein paar Minuten ... mal sehen, wie lange Vimeo dann noch braucht, bis man's sich auch anschauen kann. In der Zwischenzeit habe ich mir kurz deine Performance-Bedenken angesehen: Also zumindest auf dem Desktop scheinen 1800 Buttons in der Liste keine spürbaren (oder in den Stats sichbaren) Verzögerungen zu erzeugen. Außer das Erzeugen selbst natürlich ;-)

 

Wenn du allerdings mehr als 1800 Buttons in die Liste packst (beim 1821sten, um genau zu sein), gibt's einen Fehler:

 

Canvas element contains more than 65535 vertices. This is not supported

 

Wenn du das Hintergrundbild beim Button weglässt sind es maximal rund 2300 Einträge in der Liste. Aber ganz ehrlich: Kein Mensch möchte sich durch mehr als wenige hundert Einträge durchwuseln - da wäre dann ein Filter wohl schon angemessen (ich denke mehr als 100 Einträge in einer Liste sind von der Usability her eher keine so gute Idee).

Share this post


Link to post
Share on other sites

Hier das kleine Tutorial zum Erstellen einer dynamischen Selection List mit dem neuen Unity UI:

 

 

EDIT: Dazu gibt's jetzt auch ein Posting (mit Link auf das Beispielprojekt, einschließlich den Erweiterungen für die Performance-Tests) bei Video Tutorials:

 

[Tutorial Deutsch] Unity UI: Dynamische Selection List erstellen

  • Like 3

Share this post


Link to post
Share on other sites

Hi,

super Tutorial jashan. Das hat mir sehr geholfen und wird auch noch anderen helfen.

Scheinbar muss ich mich noch mehr mit den neuen UI-System beschäftigen. Die Layout-Elemente waren mir ehrlich gesagt neu und der Grund warum ich dachte es wird schwierig oder so wie ich es wollte scheitern.

 

Ja 1000 Elemente sind bissl hoch gegriffen. Wollte es damit nur verdeutlichen.

 

Die Buttons sollen halt die Namen der Rennstrecken repräsentieren. Bei einem 2D Spiel ist eine Bildvorschau schwierig. Zumal der Streckeneditor auch mit auf dem Smartphone ist.

 

Da programmiere ich heute Abend mal fleißig und schau das ich eine gute Projektvorstellung hinbekomme, das ihr auch mal was davon zusehen bekommt.

 

Bin sogar schon am überlegen ob ich es 2,5D mache, was eigentlich in meinen Fall nicht sehr schwerer wird. Hatte alles schon mal vorbereitet und weiss selber nicht mehr wie ich darauf gekommen bin es 2D zu machen.

 

 

MfG Felix

Share this post


Link to post
Share on other sites
Da programmiere ich heute Abend mal fleißig und schau das ich eine gute Projektvorstellung hinbekomme, das ihr auch mal was davon zusehen bekommt.

 

Cool! Viel Freude und gutes Vorankommen!

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...