Jump to content
Unity Insider Forum

peachplayer

Members
  • Content Count

    125
  • 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,495 profile views
  1. 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
  2. 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
  3. 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?
  4. 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
  5. 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
  6. 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; }
  7. 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
  8. 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
  9. 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>
  10. Hallo Sascha Ja, genau! Das Resultat ist die jeweiligen Kosten pro Parzelle! Gruss, peachplayer
  11. float parzellenSumme = parzelle.Sum(item => item.Summebilden()); gesamtsumme += parzellenSumme; Hallo Sascha Mit diesen 2 Zeilen wird doch nur die Summe ALLER Kosten gebildet, aber nicht die Summe der Kosten pro Parzelle! Muss man ev. eine zweite Schleife machen? Kann mir jemand weiterhelfen?
  12. Hallo Leute! Mit dieser App könnt ihr den wirtschaftlichen Erfolg sowie die Nährstoffbilanz für einen Ackerbaubetrieb ausrechnen. Das Resultat kann dann auch auf einem externen Server gespeichert werden. Das Projekt findet ihr hier: http://web01.petweber.ch/ Viel Spass wünscht euch Peachplayer
  13. kann mir jemand weiterhelfen? Das fertige Unity-Projekt findet ihr im Attachement! Danke für eine Antwort! Gruss, peachplayer
  14. Das Problem ist leider immer noch nicht gelöst! Gruss, peachplayer
  15. Hallo Leute Weiss jemand wie man mit Linq dynamische Summen bilden kann? D.h. ich möchte von einer vorher definierten Liste die Datensätze nach "Parzellenname" aufsummieren. Das Resultat sollte dann die Kostensumme pro Parzellenname sein! Leider klappt das bisher nicht optimal, da nur Teilsummen gebildet werden. Kann mir jemand helfen? Ich verwende folgenden Code: liste1 = new List<KostenEintrag>(); 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 parzellenName = parzelle.Key; float parzellenSumme = parzelle.Sum(item => item.Summebilden()); KostenAusgabe += parzellenSumme + "\n"; Kostentotal += parzellenSumme; } public class KostenEintrag : IComparable<KostenEintrag> { int Nummer; string Parzellenname; float Kosten_d; float Kosten_pf; float Kosten_f; float totaleKosten; float KostenSumme; float Erlös; public KostenEintrag(int nr, string v, float kd, float kpf, float kf, float e) { Nummer = nr; Parzellenname = v; Kosten_d = kd; Kosten_pf = kpf; Kosten_f = kf; Erlös = e; } public int GetNummer() { return Nummer; } public string GetParzellenname() { return Parzellenname; } public float GetKosten_d() { return Kosten_d; } public float GetKosten_pf() { return Kosten_pf; } public float GetKosten_f() { return Kosten_f; } public float GetErlös() { return Erlös; } public bool GroesserAls(float neu) { if (Nummer > neu) return true; else return false; } public float Summebilden() { totaleKosten = Kosten_d + Kosten_pf + Kosten_f; return totaleKosten; } public int CompareTo(KostenEintrag b) { // Alphabetic sort name[A to Z] return this.Parzellenname.CompareTo(b.Parzellenname); } }
×
×
  • Create New...