Jump to content
Unity Insider Forum

peachplayer

Members
  • Content Count

    130
  • Joined

  • Last visited

  • Days Won

    1

peachplayer last won the day on October 31 2016

peachplayer had the most liked content!

Community Reputation

3 Neutral

About peachplayer

  • Rank
    Advanced Member

Recent Profile Visitors

1,537 profile views
  1. Hallo Leute Weiss jemand, ob es möglich ist mit Unity pdf-files zu erstellen? Danke für eine Antwort. Gruss, peachplayer
  2. Hallo Leute Mit folgendem Code möchte ich den Gewinn(Deckungsbeitrag) pro Fläche ausgeben. Leider ist der Output nicht optimal weil z.B. Null-Werte herauskommen. Woran könnte das liegen? Gruss, peachplayer void ListeAnzeigen() { string NummerAusgabe = ""; string ParzellennameAusgabe = ""; string KostenAusgabe = ""; float Kostentotal = 0.0f; float Kostentotal_pf = 0.0f; float Kostensumme = 0.0f; float ErlösAusgabe_total = 0.0f; float parzellenSumme1 = 0.0f; int i = 0; int index1 = dropdown1.value; var parzellen2 = liste1.GroupBy(item => item.Datum.Year); foreach (var parzelle1 in parzellen2) { string Jahr_auswahl = parzelle1.Key.ToString(); if (dropdown1.options[index1].text == Jahr_auswahl) { var parzellen1 = liste1.GroupBy(item => item.GetParzellenname()); foreach (var parzelle in parzellen1) { // Code der pro Parzellenname ausgeführt wird // parzelle enthält alle Einträge der jeweiligen Parzelle //string Jahr_auswahl = liste[i].Datum.Year.ToString(); string parzellenName = parzelle.Key; Debug.Log(Jahr_auswahl); int Nummer = parzelle.Sum(item => item.Nummer); NummerAusgabe += parzelle.Sum(item => item.Nummer) + "\n"; Debug.Log(Nummer); ParzellennameAusgabe += parzellenName + "\n"; ParzellennameAnzeige.text = ParzellennameAusgabe; float parzellenSumme = parzelle.Sum(item => Mathf.Round(item.Kostensumme() * 1.00f)); Debug.Log(Nummer); IEnumerable<Kosten> result = parzelle.Where(c => c.Fläche > 0); IEnumerable<Kosten> result2 = parzelle.Where(c => c.Erlös > 0); //float Fläche2 = parzelle.Sum(item => Mathf.Round(item.Fläche * 1 / Nummer)); float Summe1 = parzelle.Sum(item => Mathf.Round(item.Erlös)); KostenAusgabe += parzellenSumme + "\n"; KostenAnzeige.text = KostenAusgabe; Kostentotal += parzellenSumme; //Erlös = parzelle.Sum(item => Mathf.Round(item.Erlös * 0.50f)); var result_erlös = result2.GroupBy(item1 => item1.Erlös); foreach (var item in result_erlös) { if (item.Key > 0) Erlös = item.Key; ErlösAusgabe += item.Key + "\n"; ErlösAnzeige.text = ErlösAusgabe; ErlösAusgabe_total += Summe1; DBAusgabe += Erlös - parzellenSumme + "\n"; } var result_fläche = result.GroupBy(item1 => item1.Fläche); foreach (var item in result_fläche) { DBAusgabe_ha += Mathf.Round((Erlös - parzellenSumme) * 100.0f / (item.Key)) + "\n"; DBAnzeige_einzeln_proha.text = DBAusgabe_ha; DBAnzeige_einzeln.text = DBAusgabe; } i++; } //StartCoroutine(SaveData(parzellenName, Erlös, parzellenSumme, (Erlös - parzellenSumme))); } } //totaleKostenAnzeige.text = Kostensumme.ToString(); if (ParzellennameAusgabe != "" && Erlös >0) { NummerAnzeige.text = NummerAusgabe; totaleKostenAnzeige.text = "Totale Kosten = " + (Kostentotal); PlayerPrefs.SetFloat("Kosten_total", Kostentotal); //totaleKostenAnzeige.text = "Totale Kosten = " + Kostentotal; DBAnzeige.text = "DB total = " + (ErlösAusgabe_total - Kostentotal).ToString(); totalerErlösAnzeige.text = "Totaler Erlös = " + ErlösAusgabe_total; Kassenbestand = (ErlösAusgabe_total - Kostentotal) + PlayerPrefs.GetFloat("Kassenbestand"); PlayerPrefs.SetFloat("Kassenbestand", Kassenbestand); } } so sieht der Output aus:
  3. Danke für die Antwort! Der Vorschlag mit DateTime funktioniert wirklich! Nur habe ich jetzt das Problem, dass das Datum wie folgt ausgegeben wird : 10/1/2019 12:00:00 AM Die Zeitangabe bräuchte ich nicht. Wie kann man das korrigieren?
  4. Hallo Leute Ich versuche mit folgendem Code eine Liste nach Datum zu sortieren. Das Datum wird als "String"-Variable gespeichert. public bool GroesserAls(string neu) { if (neu.CompareTo(Datum) < 0) { Debug.Log(neu + "ist grösser als" + Datum); return true; } else return false; } und hier die aufrufende Funktion: bool eingefuegt = false; for (int i = 0; i < liste8.Count; i++) { if ((liste8[i].GroesserAls(eintrag1.Datum))) { liste8.Insert(i, eintrag1); eingefuegt = true; break; } } if (!eingefuegt) liste8.Add(eintrag1 = new Dünger { Parzellenname = Parzellenname1, Datum = Datum1, Menge = Menge1, Kultur = Kultur1, Düngersorte = Düngersorte1, Fläche = Fläche1, Erlös = Erlös1 }); Leider kommt dabei nicht der gewünschte Output heraus, d.h. die Liste wird nicht richtig bzw. gar nicht sortiert. Vielen Dank für eine Antwort! Gruss, peachplayer
  5. Hallo Leute das problem istfolgendes: ich möchte eine leere Daten-liste mit neuen Einträgen via Inputfields befüllen...leider klappt das bisher nur mit schon bestehened Datensätzen... ich kann also keine neue Daten-liste mit Benutzereingaben anfangen! Ich benütze folgenden Code: public void NeuerEintragHinzu() { Dünger neuerEintrag = ZufallsEintrag(); liste1.Add(neuerEintrag); ListeSpeichern(); } Dünger ZufallsEintrag() { float Fläche = 0.0f; float Erlös = 0.0f; dataXml = XElement.Load(GetPath2()); IEnumerable<XElement> data = dataXml.Elements(); k = 0; foreach (XElement item in data) { //string Datum = item.Element("Datum").Value; int Nummer = int.Parse(item.Element("Nummer").Value); string Kultur = item.Element("Kultur").Value; Fläche = float.Parse(item.Element("Fläche").Value); int index1 = dropdown1.value; string Parzellenname = dropdown1.options[index1].text; // Code der pro Parzellenname ausgeführt wird // parzelle enthält alle Einträge der jeweiligen Parzelle switch (Kultur) { case "Wintergerste": { ertrag = 5000.0f; break; } case "Winterweizen": { ertrag = 7000.0f; break; } case "Mais": { ertrag = 10000.0f; break; } case "Soja": { ertrag = 3300.0f; break; } case "Raps": { ertrag = 3800.0f; break; } case "Zuckerrüben": { ertrag = 60000.0f; break; } default: Debug.Log("Der String Kultur lautet >" + Kultur + "< und ist in meiner Abfrage nicht vorhanden!"); break; } Debug.Log(Fläche); int index2 = dropdown2.value; string Düngersorte = dropdown2.options[index2].text; float Menge = float.Parse(MengeEingabe.text); float Kosten = Menge * 0.01f * 80.0f; string Datum = DatumEingabe.text; if (DatumEingabe.text == "") Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); Dünger neuerEintrag = new Dünger(); neuerEintrag.Nummer = Nummer; neuerEintrag.Parzellenname = Parzellenname; neuerEintrag.Menge = Menge; neuerEintrag.Kosten = Kosten; neuerEintrag.Fläche = Fläche; neuerEintrag.Erlös = Fläche * 0.5f * ertrag * 0.01f; neuerEintrag.Düngersorte = Düngersorte; neuerEintrag.Kultur = Kultur; if (DatumEingabe.text == "") Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); neuerEintrag.Datum = Datum; return neuerEintrag; } return null; } Gruss, peachplayer
  6. Hallo Leute Weiss jemand, wie man eine Liste mit zuvor gespeicherten Listeneinträgen einer XML-datei fortsetzten kann, so dass die Liste weitergeführt wird und nicht wieder beim 1. Listeneintrag begonnen wird? Habe es wie folgt probiert: Dünger ZufallsEintrag() { float Fläche = 0.0f; float Erlös = 0.0f; dataXml = XElement.Load(GetPath2()); IEnumerable<XElement> data = dataXml.Elements(); foreach (XElement item in data) { //string Datum = item.Element("Datum").Value; int Nummer = int.Parse(item.Element("Nummer").Value); string Kultur = item.Element("Kultur").Value; Fläche = float.Parse(item.Element("Fläche").Value); int index1 = dropdown1.value; string Parzellenname = dropdown1.options[index1].text; Debug.Log(Kultur); switch (Kultur) { case "Wintergerste": { ertrag = 5000.0f; break; } case "Winterweizen": { ertrag = 7000.0f; break; } case "Mais": { ertrag = 10000.0f; break; } default: Debug.Log("Der String Kultur lautet >" + Kultur + "< und ist in meiner Abfrage nicht vorhanden!"); break; } Debug.Log(Fläche); int index2 = dropdown2.value; string Düngersorte = dropdown2.options[index2].text; float Menge = float.Parse(MengeEingabe.text); float Kosten = Menge * 0.01f * 80.0f; string Datum = DatumEingabe.text; Dünger neuerEintrag = new Dünger(); neuerEintrag.Nummer = Nummer; neuerEintrag.Parzellenname = Parzellenname; neuerEintrag.Menge = Menge; neuerEintrag.Kosten = Kosten; neuerEintrag.Fläche = Fläche; neuerEintrag.Erlös = Fläche * 0.5f * ertrag * 0.01f; neuerEintrag.Düngersorte = Düngersorte; neuerEintrag.Kultur = Kultur; index1 = dropdown1.value; neuerEintrag.Datum = Datum; return neuerEintrag; } return null; } Gruss, peachplayer
  7. wahrscheinlich liegt das Problem bei der "return"-Anweisung. Denn jedesmal wird ja die foreach-Schleife nach der "return"-Anweisung verlassen und sozusagen wieder von vorn begonnen...es wird also immer nur das 1. Element gelesen! Gruss, peachplayer
  8. die "default"-Anweisung bringt leider auch nichts! Wenn ich die xml.datei abändere und als 1. Eintrag z.B. "Mais" eingebe, dann kommt einfach überall der Ertrag für "Mais" heraus, d.h die anderen xml-Elemente werden gar nicht ausgelesen...wie könnte man das ändern?
  9. danke für die Hinweise! Die .xml-Datei sieht wie folgt aus: <?xml version="1.0" encoding="UTF-8"?> <ArrayOfParzelle xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Parzelle> <Nummer>0</Nummer> <Parzellenname>parz1</Parzellenname> <Fläche>180</Fläche> <Kultur>Wintergerste</Kultur> <Menge>0</Menge> </Parzelle> <Parzelle> <Nummer>0</Nummer> <Parzellenname>parz2</Parzellenname> <Fläche>150</Fläche> <Kultur>Winterweizen</Kultur> <Menge>0</Menge> </Parzelle> <Parzelle> <Nummer>0</Nummer> <Parzellenname>parz3</Parzellenname> <Fläche>300</Fläche> <Kultur>Mais</Kultur> <Menge>0</Menge> </Parzelle> <Parzelle> <Nummer>0</Nummer> <Parzellenname>parz4</Parzellenname> <Fläche>80</Fläche> <Kultur>Mais</Kultur> <Menge>0</Menge> </Parzelle> <Parzelle> <Nummer>0</Nummer> <Parzellenname>parz5</Parzellenname> <Fläche>70</Fläche> <Kultur>Mais</Kultur> <Menge>0</Menge> </Parzelle> </ArrayOfParzelle> Ich vermute, dass einfach immer nur der 1. Eintrag ausgelesen wird und bei der switch-Anweisung auch nur in die 1. Abfrage mit "Wintergerste" gesprungen wird? Gruss, peachplayer
  10. Danke für die Antwort! Ich konnte das Problem "annähernd" lösen, indem ich statt die Variable 'Kultur' bei der switch-Anweisung, die Variable 'index1' abfrage! Das Ergebnis ist aber leider noch nicht ganz zufriedenstellend! Gruss, peachplayer
  11. Hallo Leute Kann mir jemand helfen? Ich habe folgendes Problem: Wie kann ich den ertrag pro Kultur mit einer switch-Anweisung einer Variable zuweisen? Mit folgendem Code funktioniert das leider nicht richtig da nur die 1.switch-Anweisung durchlaufen wird. D. h. es kommt als Ergebnis immer der Wert 5000 für "Wintergerste" heraus! Dünger ZufallsEintrag() { float Fläche = 0.0f; float Erlös = 0.0f; dataXml = XElement.Load(GetPath2()); IEnumerable<XElement> data = dataXml.Elements(); foreach (XElement item in data) { string Kultur = item.Element("Kultur").Value; Fläche = float.Parse(item.Element("Fläche").Value); int index1 = dropdown1.value; string Parzellenname = dropdown1.options[index1].text; // Code der pro Parzellenname ausgeführt wird // parzelle enthält alle Einträge der jeweiligen Parzelle switch (Kultur) { case "Wintergerste": { ertrag = 5000.0f; break; } case "Winterweizen": { ertrag = 7000.0f; break; } case "Mais": { ertrag = 10000.0f; break; } } Debug.Log(ertrag); Dünger neuerEintrag = new Dünger(); int Nummer = k; int index2 = dropdown2.value; string Düngersorte = dropdown2.options[index2].text; float Menge = float.Parse(MengeEingabe.text); float Kosten = Menge * 0.01f * 80.0f; neuerEintrag.Nummer = Nummer; neuerEintrag.Parzellenname = Parzellenname; neuerEintrag.Menge = Menge; neuerEintrag.Kosten = Kosten; neuerEintrag.Fläche = Fläche; neuerEintrag.Erlös = Fläche* 0.5f *ertrag*0.01f; neuerEintrag.Düngersorte = Düngersorte; neuerEintrag.Kultur = Kultur; return neuerEintrag; } return null; }
  12. Hallo Leute Weiss jemand wie man ein .xml-file dynamisch laden/speichern kann, sodass man nachher eine eigenständige Unity Applikation für Windows oder WebGl machen kann? ich versuche es folgendermassen: liste3 = MyXML.DeserializeFromXML<Parzelle>(Application.dataPath + "/Parzelle.xml"); Danke für eure Antworten! Gruss, peachplayer
  13. konnte das Problem leider immer noch nicht lösen. Auch wenn ich der Basis-Klasse Attribute hinzufüge bleibt der Output unverändert und es wird nur 1 Datensatz angezeigt. Kann mir jemand helfen? Gruss, peachplayer
  14. Hallo Leute Weiss jemand wie man korrekt den Inhalt einer Liste in eine .xml-Datei speichert? Habe es wie folgt probiert: foreach (Parzelle item in liste) { XmlSerializer serializer = new XmlSerializer(typeof(Parzelle)); using (StreamWriter writer = new StreamWriter("Parzelle.xml")) { serializer.Serialize(writer, item); } } Leider wir beim Output-file nur der LETZTE Listeneintrag geschrieben. Woran könnte das liegen? Der Output sieht so aus: <?xml version="1.0" encoding="UTF-8"?> -<Parzelle xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Nummer>4</Nummer> <Parzellenname>Zuchern</Parzellenname> <Fläche>77</Fläche> <Kultur>Mais</Kultur> </Parzelle>
  15. Hallo Sascha Ja, genau! Das Resultat ist die jeweiligen Kosten pro Parzelle! Gruss, peachplayer
×
×
  • Create New...