peachplayer Geschrieben 12. Juli 2018 Melden Share Geschrieben 12. Juli 2018 Hallo Leute Weiss jemand wie man den Text eines Listenfeldes zeilenweise ausgeben kann, ohne dass die Werte kumuliert werden? Habe es wie folgt probiert: void ListeAnzeigen() { string NummerAusgabe = ""; string ParzellennameAusgabe = ""; string NAusgabe = ""; string PAusgabe = ""; string KAusgabe = ""; string MgAusgabe = ""; for (int i = 0; i < liste.Count; i++) { NummerAusgabe += liste[i].GetNummer() + "\n"; ParzellennameAusgabe += liste[i].GetParzellenname() + "\n"; NAusgabe += liste[i].GetNBilanz() + "\n"; PAusgabe += liste[i].GetPBilanz() + "\n"; KAusgabe += liste[i].GetKBilanz() + "\n"; MgAusgabe += liste[i].GetMgBilanz() + "\n"; NAnzeige.text = NAusgabe; PAnzeige.text = PAusgabe; KAnzeige.text = KAusgabe; MgAnzeige.text = MgAusgabe; } } Leider werden die Werte der Variabeln NAusgabe, PAusgabe, KAusgabe, MgAusgabe dabei aufsummiert! Gruss, peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
firstIssue Geschrieben 12. Juli 2018 Melden Share Geschrieben 12. Juli 2018 Hast du es mal mit .ToString() probiert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 13. Juli 2018 Autor Melden Share Geschrieben 13. Juli 2018 vor 3 Stunden schrieb firstIssue: Hast du es mal mit .ToString() probiert? Das nützt leider auch nichts! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
firstIssue Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 Wo hast du es denn hingesetzt, das ToString? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 13. Juli 2018 Autor Melden Share Geschrieben 13. Juli 2018 NAnzeige.text = NAusgabe.ToString(); etc. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
firstIssue Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 41 minutes ago, peachplayer said: NAnzeige.text = NAusgabe.ToString(); etc. NAusgabe += liste[i].GetNBilanz().ToString() + "\n"; Du musst die Zahl direkt parsen und nicht den Text des Textfeldes, der eh bereits das falsche Ergebnis beinhaltet. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 Oder einfach : NAusgabe += "" + liste[i].GetNBilanz() + "\n"; Denn wenn man mit einem String anfängt wird das Ganze zum String. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
firstIssue Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 Just now, malzbie said: Oder einfach : NAusgabe += "" + liste[i].GetNBilanz() + "\n"; Denn wenn man mit einem String anfängt wird das Ganze zum String. Das tut er bereits bei der Nennung der Variable string NAusgabe = ""; , aber ich lass mich gern eines besseren belehren, wenn das so auch funktioniert Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 @malzbie einInt + einString ergibt auch schon einen String. Mit einem String anfangen muss es also nicht, das gegebene "\n" reicht aus. Die ganze Problemstellung halte ich für sehr merkwürdig, denn an dem Code oben ist einfach kein Fehler zu sehen. Da findet nirgendwo eine Addition statt, sondern überall Konkatenation. Wenn also irgendwo Dinge aufsummiert werden, dann innerhalb der Methoden GetNBilanz und dergleichen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 Ja, das stimmt. Aber dann ist .ToString genauso unnötig. Ich habe das eben mal mit nem einfachen int Array getestet und der Code funktioniert einwandfrei. Natürlich muss das Textelement auch mehrere Zeilen darstellen können. Somit kann das Problem nur aus der Funktion her kommen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 vor 42 Minuten schrieb malzbie: Ja, das stimmt. Aber dann ist .ToString genauso unnötig. Allerdings! Ich hab da auch nur nix gesagt weil ich bisher nicht mit einem konstruktiven Alternativvorschlag aufwarten konnte. Immer nur Bemängeln ist ja nicht so die gute Idee Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 13. Juli 2018 Autor Melden Share Geschrieben 13. Juli 2018 Leider konnte ich das Problem mit den Lösungsvorschlägen bisher noch nicht lösen! In der Methode GetNBilanz() wird keine Variable aufsummiert! Daher ist der Fehler wohl eher in der Funktion ListeAnzeigen() zu suchen. Kann mir jemand weiterhelfen? Gruss, peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 vor 10 Minuten schrieb peachplayer: Daher ist der Fehler wohl eher in der Funktion ListeAnzeigen() zu suchen. Da ist kein Fehler. Die Methode ist ja jetzt auch nicht komplex genug, dass man da mal eben was übersieht. Mach mal Debug.Log(liste[i].GetNBilanz()); und schau, was rauskommt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 13. Juli 2018 Autor Melden Share Geschrieben 13. Juli 2018 Hallo Sascha Habe das probiert für Debug.Log(liste[i].GetNBilanz()); und es kommen die gleichen Werte wie bei dem Screenshot heraus, also "70", "140", "210". Gruss peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 Dann ist der Fehler beim Befüllen der Liste.. Kannst du den Code dafür mal posten? Oder hast du die Werte per Hand gesetzt? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 vor 36 Minuten schrieb peachplayer: und es kommen die gleichen Werte wie bei dem Screenshot heraus Daran siehst du, dass der Fehler innerhalb der Methoden liegt, wie wir gesagt haben, und nicht in ListeAnzeigen(). Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 13. Juli 2018 Autor Melden Share Geschrieben 13. Juli 2018 Hier der Code für das Befüllen der Liste: void ListeFuellen() { for (int i = 0; i < 10; i++) { if (PlayerPrefs.HasKey("Nummer_p" + i)) { int Nummer = PlayerPrefs.GetInt("Nummer_d" + i); string Parzellenname = PlayerPrefs.GetString("Parzellenname_b" + i); NBilanz = PlayerPrefs.GetFloat("NSum" + i) - PlayerPrefs.GetFloat("NbSum" + i); PBilanz = PlayerPrefs.GetFloat("PSum" + i) - PlayerPrefs.GetFloat("PbSum" + i); KBilanz = PlayerPrefs.GetFloat("KSum" + i) - PlayerPrefs.GetFloat("KbSum" + i); MgBilanz = PlayerPrefs.GetFloat("MgSum" + i) - PlayerPrefs.GetFloat("MgbSum" + i); DüngerEintrag_NPK_Bilanz eintrag = new DüngerEintrag_NPK_Bilanz(Nummer, Parzellenname,NBilanz, PBilanz, KBilanz, MgBilanz); liste.Add(eintrag); } else break; } Gruss, peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 13. Juli 2018 Melden Share Geschrieben 13. Juli 2018 Und wenn du dir beim Befüllen mal die Werte von "NSumX" und "NbSumX" ausgeben lässt, nehme ich mal an, dass die Differenz genau das ist, was am Ende ausgegeben wird, oder? Wo werden denn die Werte für die PlayerPrefabs berechnet? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 13. Juli 2018 Autor Melden Share Geschrieben 13. Juli 2018 Hallo Leute Konnte das Problem endlich lösen. Der Fehler lag in den PlayerPrefs! Gruss, peachplayer 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.