dewa Geschrieben 23. März 2017 Melden Share Geschrieben 23. März 2017 Hallo zusammen, ich habe ein Problem. Und zwar Erstelle ich am Start meines Spieles eine Freundschaftsliste die aus den Kontaktdaten(Android) und einer Datenbank erstellt wird. Durch eine For Schleife erstelle ich dann Gameobjekte in einem Grid Layout Group die den Namen,Exp und Handynummer erhalten. Nun möchte ich das die Gameobjekte so angeordnet werden das der "Freund" mit den meisten EXP ganz oben im Grid erscheint. habt Ihr ein paar gute Ideen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
mikomi Geschrieben 23. März 2017 Melden Share Geschrieben 23. März 2017 hey also du hast ja schon deine liste,diese solltest du bevor du sie aufs canvas zeichnest sortieren. gibt da ein paar grundlegende sortieralgorithmen die einfach zu implementieren sind, zb bubble sort. einfach mal googlen ich glaube c# hat da sogar schon was rdy aber das wäre ja langweilig^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiwaz Geschrieben 24. März 2017 Melden Share Geschrieben 24. März 2017 Ja wie mikomi schon gesagt hast musst du einfach nur die Liste der Kontakte durchgehen und die Kontakte nach EXP sortieren. Allerdings würde ich nicht unbedingt Bubble Sort benutzen, sondern vllt Quick Sort. Gibt sehr viele Wege das zu machen und ist eigentlich auch kein Hexenwerk z.B. durch sowas kontaktListe.Sort((x, y) => x.EXP.CompareTo(y.EXP)); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
dewa Geschrieben 26. März 2017 Autor Melden Share Geschrieben 26. März 2017 Danke für eure Antworten. Ich habe es mal mit dem bubble sort versucht. Ich stoß aber immer auf ein problem. Egal wie oft ich die For Schleife auch durchlaufen lasse Sie ordnet immer nur einen durchgang. Selbst wenn ich statt X 1000 Eingebe werden Alle Gameobjekte nur 1 Durchgang geordnet EDIT: Habe eine lösung gefunden. Ich setze einfach sortieren(); in mein if Statement sodas er solange durchlaufen muss bis er nix mehr zum ändern hat public void sortieren() { //Wieviel Childs im Gameobjekt int childs = Scorepanel.transform.childCount; int welches_child=0; int x=0; for (int i = 0; i < childs +x; i++) { //Damit kein Child ausgewählt wird welches nicht existiert if(welches_child+1==childs) { welches_child = 1; } Transform child_1 = Scorepanel.gameObject.transform.GetChild(welches_child); Transform child_2 = Scorepanel.gameObject.transform.GetChild(welches_child + 1); Transform ThisEXP_1 = child_1.Find("EXP"); Transform ThisEXP_2 = child_2.Find("EXP"); Text EXP_1 = ThisEXP_1.GetComponent<Text>(); Text EXP_2 = ThisEXP_2.GetComponent<Text>(); int.TryParse(EXP_1.text, out oberes_child_int); int.TryParse(EXP_2.text, out unteres_child_int); //beim nächsten durchgang das nächste Child auswählen welches_child++; //Wenn EXP vom oberen Child höher sind Ihn dann runtersetzen if (oberes_child_int > unteres_child_int) { x++; child_1.SetSiblingIndex(i+1); } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
mikomi Geschrieben 27. März 2017 Melden Share Geschrieben 27. März 2017 du scheinst ja schon eine lösung gefunden zu haben ich hätte allerdings nicht die kindobjekte sortiert bzw nicht mit gameobjekten direkt gearbeitet (weil ich mir nicht sicher wäre, ob die sich so verhalten hätten wie gewollt) sondern hätte die liste mit informationen, bevor ich sie als ui elemente instanziiere, erstmal sortiert. sieht für mich nämlich etwas überkompliziert aus aber das wichtigste ist, es klappt 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.