Jump to content
Unity Insider Forum

peachplayer

Members
  • Gesamte Inhalte

    271
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle erstellten Inhalte von peachplayer

  1. peachplayer

    3-d-Objekte justieren

    Hallo Leute Weiss jemand wie man 3-D-Objekte in einer Szene richtig 'justieren' kann, sodass nachher alle Objekte in die gleiche Richtung (um die y-Achse) drehen? Einige 3-dObjekte, z.B. die grüne Scheibenegge, drehen in die falsche Richtung. void Update() { foreach (GameObject joint in hingeJoints) { if (joint.name == "Ballenpresse" | joint.name == "Wagen" | joint.name == "Scheibenegge") joint.transform.Rotate((new Vector3(0, 0, 1) * rotationSpeed * Time.deltaTime)); else joint.transform.Rotate((new Vector3(0, 1, 0) * rotationSpeed * Time.deltaTime)); } }
  2. Hallo Leute Weiss jemand, wie man eine .xml-datei in einem spezifischem Ordner abspeichern kann? Gruss, peachplayer
  3. Hallo Leute Ich versuche mit folgender Funktion den Wert eines Dropdown events abzufragen: public void OnMyValueChanged(Dropdown dd) { if (Maschinen_index(dd.value) != "") Maschine_gekauft = true; else Maschine_gekauft = false; } private string Maschinen_index(int Nummer) { string Maschinen = ""; string Maschinen_vorhanden = ""; int i = 0; if (liste4.Count > 0) { foreach (Inventory1 item1 in liste4) { if (item1.Maschinennamen == Feldarbeiten2[Nummer]) { Maschinen = Feldarbeiten1[Nummer]; Maschinen_vorhanden = Maschinen; MaschinenAnzeige.text += Feldarbeiten2[Nummer] + " vorhanden!" + "\n"; } else MaschinenAnzeige.text = Feldarbeiten2[Nummer] + " ist nicht vorhanden...bitte zuerst Maschine kaufen!"; break; } } return Maschinen; } Leider kommt als return Wert immer nur das 0-te Element von liste4! Kann mir jemand helfen? Gruss, Peachplayer
  4. peachplayer

    zufällige Ereignisse

    Hallo Leute Weiss jemand, wie man zufällige Ereignisse in Unity machen kann? Die Ereignisse sollten zufällig übers ganze Kalenderjahr verteilt sein. Habs wie folgt probiert: public class mytimer_class : MonoBehaviour { float cntdnw = 1.0f; public Text disvar; public Button startButton; public Button stoppButton; public DateTime dt, webString; public Text events; public string[] event_text = new string[3] { "Pilzkrankheit Weizen", "Unkraut in Mais", "Dürre" }; private void Awake() { if (Date_class.Datum.Year < 2021) { Date_class.Datum = new DateTime(2021, 01, 01); DateTime webString = dt; } dt = System.DateTime.Parse(PlayerPrefs.GetString("Stoppedtime")); webString = dt; Time.timeScale = 0.5f; } private void Start() { startButton = GameObject.Find("start_button").GetComponent<Button>(); stoppButton = GameObject.Find("stopp_button").GetComponent<Button>(); } public void Startbutton() { startButton.enabled = false; stoppButton.enabled = true; } public void Stoppbutton() { stoppButton.enabled = false; startButton.enabled = true; } public void events_handler() { if (Date_class.Datum.DayOfYear > 30) { int xcount = UnityEngine.Random.Range(0, 3); events.text = event_text[xcount]; } } void Update() { if ((startButton.enabled)) { Time.timeScale = 0.5f; cntdnw += Time.deltaTime; int xcount = UnityEngine.Random.Range(0, 3); double b = System.Math.Round(cntdnw, 2); dt = webString.AddDays(b); string dateTimeString = System.String.Format("{0:yyyy-MM-dd-hh}", dt); if ((Date_class.Datum.DayOfYear > 30) && (Date_class.Datum.Day >= 3)) { events.text = event_text[xcount]; } disvar.text = dateTimeString; } if (stoppButton.enabled) { Debug.Log("game stopped!" + dt); PlayerPrefs.SetString("Stoppedtime",dt.ToShortDateString()); Date_class.Datum = dt; } } } Gruss, peachplayer
  5. peachplayer

    globale Variablen

    hallo Leute Weiss jemand wie man statische Variablen oder statische Klassen defienieren kann, die dann für mehre Szenen gültig sind. Habs mit statischen Variablen probiert, jedoch kann ich nachher von anderen Scripts nicht mehr darauf zugreifen. also z.B. Script1: public static DateTime Datum_neu; Script2: public class Date_class { DateTime Datum; } Script3: DatumEingabe.text = Date_class.Datum.ToString(); Gruss, peachplayer
  6. for (int i = 0; i < liste2.Count; i++) { liste2[i].Nummer = i; } Sorry, das müsste so aussehen für bestehende Listen. Gruss, peachplayer
  7. Hallo Leute Weiss jemand wie man einen "autoinkrement-Index" für eine bestimmte liste mit schon vorhandenen Daten generieren kann? Habs wie folgt probiert: public void AddNummer() { int index1 = dropdown1.value; string Datei_auswahl = dropdown1.options[index1].text; if (File.Exists(Datei_auswahl) && index1 == 0) { liste2 = MyXML.DeserializeFromXML<Feldarbeit>(Datei_auswahl); UnityEngine.Debug.Log(liste2.Count); liste2.Sort((ps1, ps2) => DateTime.Compare(ps1.Datum, ps2.Datum)); // nach Datum sortieren! Feldarbeit neuerEintrag = new Feldarbeit(); for (int i = 0; i < liste2.Count; i++) { liste2.Add(neuerEintrag = new Feldarbeit { Nummer = i, Parzellenname = liste2[i].Parzellenname, Feldarbeiten = liste2[i].Feldarbeiten, Fläche = liste2[i].Fläche, Kosten = liste2[i].Kosten, Datum = liste2[i].Datum }); } foreach (var item in liste2) { Console.WriteLine(item); } } Als Resultat kommt ein leeres .XML-file heraus! Danke für eine Antwort!
  8. Hallo Leute Weiss jemand, wie man einen selbstfahrenden Mähdrescher programmiert, der ein zuvor erstelltes Feld aberntet. Geht das ev. mit dem Nav Mesh Agent? Wie kann man die Koordinaten der Pflanzen an den Nav Mesh Agent weitergeben? for (z = 0; z < 10; z++) { for (x = 0; x < 12; x++) { k = z * 12 + x; newX = offsetX + i * 250 + x * abstandX; newZ = offsetZ + i * 0 + z * abstandZ; GameObject obj = (GameObject)Instantiate(prefabHaus[i], new Vector3(newX, 1f, newZ), Quaternion.identity); obj.SetActive(true); pooledObjects.Add(obj); UnityEngine.Debug.Log(parzelle.Parzname + parzelle.Fläche); } } i++; UnityEngine.Debug.Log("i =" + i); } Mit dem obigen Code wird das Feld mit den Pflanzen erstellt! Gruss, peachplayer
  9. Ich konnte das Problem selber lösen! Ich musste bloss die obige Funktion in die "Anzeige"-Funktion integrieren, denn da wird ja jedesmal der Index neu gesetzt, sonst bleibt er immer gleich! Gruss, peachplayer
  10. Hallo Leute Ich habe folgendes Problem: wenn ich den Index des Dropdown-Objektes abfragen will (index3), kommt immer nur der 0-te Wert heraus, sodass immer nur das 1.Element des Dropdown-Feldes heraus kommt. Woran könnte das liegen? Die Index-Werte sollten doch auch dynamisch abgefragt werden können? void ListeFuellen() { //get the selected index int index3 = dropdown3.GetComponent<Dropdown>().value; float Menge; dataXml = XElement.Load(".\\Dünger.xml"); IEnumerable<XElement> data = dataXml.Elements(); foreach (XElement item in data) { if ((float)item.Element("Fläche") != 0) { Debug.Log(item.Element("Parzellenname").Value); Debug.Log(item.Element("Menge").Value); Debug.Log(item.Element("Düngersorte").Value); // Code der pro Parzellenname ausgeführt wird // parzelle enthält alle Einträge der jeweiligen Parzelle string Düngersorte = item.Element("Düngersorte").Value; Debug.Log(Düngersorte); Menge = (float)item.Element("Menge"); Debug.Log(Menge); Parzellenname = item.Element("Parzellenname").Value; String value = item.Element("Datum").Value; int startIndex = 0; int length = 4; String substring = value.Substring(startIndex, length); switch (Düngersorte) { case "Ammonsalpeter": N = 27.0f * Menge * 0.01f; P = 0.0f * Menge * 0.01f; K = 0.0f * Menge * 0.01f; Mg = 2.50f * Menge * 0.01f; break; case "Ceral": N = 0.0f * Menge * 0.01f; P = 16.0f * Menge * 0.01f; K = 32.0f * Menge * 0.01f; Mg = 0.0f * Menge * 0.01f; break; case "Suplesan": N = 20.0f * Menge * 0.01f; P = 8.0f * Menge * 0.01f; K = 8.0f * Menge * 0.01f; Mg = 02.0f * Menge * 0.01f; break; case "Vernal plus": N = 20.0f * Menge * 0.01f; P = 6.0f * Menge * 0.01f; K = 6.0f * Menge * 0.01f; Mg = 02.0f * Menge * 0.01f; break; } DüngerEintrag_NPK eintrag1 = new DüngerEintrag_NPK(); eintrag1.N = N; eintrag1.P = P; eintrag1.K = K; eintrag1.Mg = Mg; eintrag1.Parzellenname = Parzellenname; eintrag1.Datum = DateTime.Parse(value); if (substring == dropdown3.options[index3].text) liste1.Add(eintrag1); } } }
  11. Hallo Leute Weiss jemand, ob es möglich ist mit Unity pdf-files zu erstellen? Danke für eine Antwort. Gruss, peachplayer
  12. 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:
  13. 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
  14. 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
  15. 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
  16. 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
  17. peachplayer

    Textfeld scalen

    Hallo Leute Weiss jemand wie man ein Textfeld in Unity vergrössern(scalen) kann? Habe es wie folgt versucht: public class Zoom : MonoBehaviour { public float zoomSpeed; public Text percentageText; // Use this for initialization void Start() { percentageText = GetComponent<Text>(); } // Update is called once per frame void Update() { if (Input.GetAxis("Mouse ScrollWheel") < 0) { percentageText.transform.localScale += new Vector3(2.0f * zoomSpeed, 2.0f * zoomSpeed,0.0f); } if (Input.touchCount < 0) if (Input.GetAxis("Mouse ScrollWheel") > 0) { percentageText.transform.localScale -= new Vector3(-0.5f * zoomSpeed, -0.5f * zoomSpeed, 0.0f); } } } Der Code funktioniert zwar, jedoch ist das Ergebnis nicht gerade optimal. Gruss, peachplayer
  18. peachplayer

    Text positionieren

    Hallo Leute Weiss jemand wie man in Unity zuvor gespeicherte PlayerPrefs als Texte an verschiedenen Koordinaten positionieren kann? Habe es so probiert: scoreText.text = PlayerPrefs.GetString("Parzellenname_p" + i); scoreText.transform.position = new Vector3(-400+i*80, -80+i*50, 0); leider klappt das bei mir nicht! Kann mir jemand helfen? Gruss peachplayer
  19. peachplayer

    Rechtecke zeichnen

    Hallo Leute Weiss jemand, wie man auf einer 2-dimensionalen Fläche verschiedene Rechtecke zeichnen kann? Die Rechtecke sollten also auf einer Matrix dargestellt werden. Habe es mit folgendem Code versucht: using System.Collections; using System.Collections.Generic; using UnityEngine; public class drawRectangle : MonoBehaviour { public Rect[] rec = new Rect[20]; public Color[] imageOneD = new Color[20]; public Texture aTexture; public Material mat; // Use this for initialization void Start () { float offsetX =10.0f; float offsetZ = 5.0f; float abstandX = 20f; float abstandZ = 25f; int x; // einfache Zaehlvariable int z; // einfache Zaehlvariable int k=0; // einfache Zaehlvariable float newX; float newZ; for (z = 0; z < 2; z++) { for (x = 0; x < 10; x++) { //k = k + 1; k = 2*z+x; newX = offsetX + x * abstandX; newZ = offsetZ + z * abstandZ; rec[k] = new Rect(newX, newZ, Screen.width / 10, Screen.height / 15); Debug.Log(rec[k].position.x + " an Position " + newX + " : " + newZ); } } } void OnGUI() { int leftBorder = 10; int rightBorder = 10; int topBorder = 5; int bottomBorder = 5; for (int i = 0; i < 20; i++) { // Draw colored rectangle GUI.color = imageOneD[i]; Graphics.DrawTexture (rec[i], aTexture, leftBorder, rightBorder , topBorder , bottomBorder, mat); } } Leider klappt das nicht richtig, weil die Rechtecke irgendwie zufällig angeordnet werden statt nebeneinander. Gruss, peachplayer
  20. ...Au weia... habe gemerkt dass im Inspector andere Werte eingetragen waren! Gruss Peachplayer
  21. using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class Anzeige1 : MonoBehaviour { List<HighscoreEintrag> liste; public InputField NummerEingabe; public InputField ParzellennameEingabe; public InputField FlächeEingabe; public InputField KulturEingabe; public Text NummerAnzeige, ParzellennameAnzeige, FlächeAnzeige, KulturAnzeige, KassenbestandAnzeige, ÖkobilanzAnzeige; public Toggle anzeigeSchalter; public Rect windowRect0 = new Rect(600, 20, 120, 50); public string[] Flurname = new string[5] { "Fahlrüti1", "Studenacker1", "Suchern1", "Wille2", "Zuchern" }; public float[] Area = new float[5] { 219, 155, 185, 88, 77 }; public string[] Kulturen = new string[5] { "Winterweizen", "Mais", "Wintergerste", "Wintergerste", "Wintergerste" }; public int k; void Start() { liste = new List<HighscoreEintrag>(); ListeFuellen(); } void ListeFuellen() { for (int i = 0; i < 10; i++) { if (PlayerPrefs.HasKey("Parzellenname_p" + i)) { int Nummer = PlayerPrefs.GetInt("Nummer_p" + i); string Parzellenname = PlayerPrefs.GetString("Parzellenname_p" + i); string Kultur = PlayerPrefs.GetString("Kultur_p" + i); float Fläche = PlayerPrefs.GetFloat("Fläche_p" + i); HighscoreEintrag eintrag = new HighscoreEintrag(Nummer, Parzellenname, Fläche, Kultur); liste.Add(eintrag); } else break; } ListeAnzeigen(); } void ListeAnzeigen() { string NummerAusgabe = ""; string ParzellennameAusgabe = ""; string FlächeAusgabe = ""; string KulturAusgabe = ""; string NAusgabe = ""; string PAusgabe = ""; string KAusgabe = ""; string MgAusgabe = ""; for (int i = 0; i < liste.Count && i < 10; i++) { NummerAusgabe += liste[i].GetNummer() + "\n"; ParzellennameAusgabe += liste[i].GetParzellenname() + "\n"; FlächeAusgabe += liste[i].GetFläche() + "\n"; KulturAusgabe += liste[i].GetKultur() + "\n"; if (liste[i].GetKultur() == "Winterweizen") Debug.Log("Winterweizen"); PlayerPrefs.SetFloat("Ertrag_ww" + i, 7000.0f); if (liste[i].GetKultur() == "Wintergerste") PlayerPrefs.SetFloat("Ertrag_wg" + i, 5000.0f); Debug.Log("Wintergerste"); if (liste[i].GetKultur() == "Mais") PlayerPrefs.SetFloat("Ertrag_m" + i, 10000.0f); Debug.Log("Mais"); //NAusgabe += liste[i].GetN() + "\n"; //PAusgabe += liste[i].GetP() + "\n"; //KAusgabe += liste[i].GetK() + "\n"; //MgAusgabe += liste[i].GetMg() + "\n"; } NummerAnzeige.text = NummerAusgabe; ParzellennameAnzeige.text = ParzellennameAusgabe; FlächeAnzeige.text = FlächeAusgabe; KulturAnzeige.text = KulturAusgabe; KassenbestandAnzeige.text = PlayerPrefs.GetFloat("Kassenbestand").ToString(); ÖkobilanzAnzeige.text = PlayerPrefs.GetFloat("Ökobilanz").ToString(); //NAnzeige.text = NAusgabe; //PAnzeige.text = PAusgabe; //KAnzeige.text = KAusgabe; //MgAnzeige.text = MgAusgabe; } public void NeuerEintragHinzu() { HighscoreEintrag neuerEintrag = ZufallsEintrag(); k++; bool eingefuegt = false; for (int i = 0; i < liste.Count; i++) { if (!liste[i].GroesserAls(neuerEintrag.GetNummer())) { liste.Insert(i, neuerEintrag); eingefuegt = true; break; } } if (!eingefuegt) liste.Add(neuerEintrag); ListeAnzeigen(); ListeSpeichern(); } HighscoreEintrag ZufallsEintrag() { int Nummer = int.Parse(NummerEingabe.text); string Parzellenname = ParzellennameEingabe.text; float Fläche = float.Parse(FlächeEingabe.text); string Kultur = KulturEingabe.text; string eingabe = ParzellennameEingabe.text; if (Nummer == 0 && eingabe == "" && Fläche == 0 && Kultur == "" && k<=4) { Nummer = k; Parzellenname = Flurname[k]; Fläche = Area[k]; Kultur = Kulturen[k]; HighscoreEintrag neuerEintrag1 = new HighscoreEintrag(Nummer, Parzellenname, Fläche, Kultur); return neuerEintrag1; } if (eingabe != "") { if (eingabe.Length >= 20) eingabe = eingabe.Substring(0, 20); Parzellenname = eingabe; } HighscoreEintrag neuerEintrag = new HighscoreEintrag(Nummer, Parzellenname, Fläche, Kultur); return neuerEintrag; } void ListeSpeichern() { for (int i = 0; i < liste.Count && i < 10; i++) { PlayerPrefs.SetInt("Nummer_p" + i, liste[i].GetNummer()); PlayerPrefs.SetString("Parzellenname_p" + i, liste[i].GetParzellenname()); PlayerPrefs.SetFloat("Fläche_p" + i, liste[i].GetFläche()); PlayerPrefs.SetString("Kultur_p" + i, liste[i].GetKultur()); } } public void AllesLoeschen() { NummerAnzeige.text = ""; ParzellennameAnzeige.text = ""; FlächeAnzeige.text = ""; KulturAnzeige.text = ""; liste.Clear(); PlayerPrefs.DeleteAll(); } void OnGUI() { if (PlayerPrefs.GetFloat("Kassenbestand") >= 100000) windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, "Spiel gewonnen!"); //GUILayout.Label("Spiel gewonnen!"); if (PlayerPrefs.GetFloat("Kassenbestand") <= -50000) windowRect0 = GUI.Window(0, windowRect0, DoMyWindow,"Spiel verloren!"); //GUILayout.Label("Spiel verloren!"); if (PlayerPrefs.GetFloat("Ökobilanz") <= -1000) windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, "Spiel verloren!"); //GUILayout.Label("Spiel verloren!"); //if (gameRunning) //{ // GUILayout.Label("Aktuelle Runde: " + currentRound); // GUILayout.Label("Aktueller Spieler: " + currentPlayer); // GUILayout.Label("Aktueller Spielzug: " + currentBall); //} else //{ // GUILayout.Label("Spiel starten mit linker Maustaste."); //} if (GUI.Button(new Rect(10, 10, 200, 50), "Parzellendaten eingeben")) Application.LoadLevel(0); if (GUI.Button(new Rect(10, 100, 200, 50), "Dünger eingeben")) Application.LoadLevel(1); if (GUI.Button(new Rect(10, 150, 200, 50), "Pflanzenschutzmittel eingeben")) Application.LoadLevel(2); if (GUI.Button(new Rect(10, 200, 200, 50), "Feldarbeiten eingeben")) Application.LoadLevel(3); if (GUI.Button(new Rect(10, 250, 200, 50), "Kosten anzeigen")) Application.LoadLevel(4); if (GUI.Button(new Rect(10, 300, 200, 50), "DB anzeigen")) Application.LoadLevel(5); if (GUI.Button(new Rect(10, 350, 200, 50), "Nährstoffbilanz anzeigen")) Application.LoadLevel(6); if (GUI.Button(new Rect(10, 400, 200, 50), "Spiel neu starten")) PlayerPrefs.DeleteAll(); } void DoMyWindow(int windowID) { } public void AnzeigeSchalterGeklickt() { if (anzeigeSchalter.isOn) ListeAnzeigen(); else { NummerAnzeige.text = ""; ParzellennameAnzeige.text = ""; FlächeAnzeige.text = ""; KulturAnzeige.text = ""; } } public void Animation_anzeigen() { Application.LoadLevel(9); } } Hallo Leute Versuche mit obigem Code vordefienierte Werte für die Variable "Area[ ]" anzuzeigen bei der Tasteneingabe "0". Leider funktioniert das nicht und es werden nur bereits in den Player-Prefs gespeicherte Werte angezeigt. Woran könnte das liegen? Bin dankbar für Antworten! Gruss Peachplayer
  22. Hallo Leute Weiss jemand wie man eine SQLlite-Datenbank in eine Datenbank mit der Extension .bytes konvertieren kann? Gruss Peachplayer
  23. peachplayer

    Score-Wert

    Hallo Leute Weiss jemand wie man einen Highscore macht? Gruss peachplayer
  24. Hallo Leute Kann mir jemand helfen? Ich bekomme bei folgendem Code die Fehlermeldung: "Nicht alle Codepfade geben einen Wert zurück" Gruss Peachplayer HighscoreEintrag4 ZufallsEintrag() { string Parzellenname = "NN"; float Fläche = 0; double n = 0; double p = 0; double k = 0; double mg = 0; for (int i = 0; i < liste.Count && i < 34; i++) { string Kultur = PlayerPrefs.GetString("Kultur" + i, liste[i].GetKultur()); Parzellenname = PlayerPrefs.GetString("Parzelle" + i, liste[i].GetParzellenname()); string nAngebot = PlayerPrefs.GetString("NAngebot" + i); string pAngebot = PlayerPrefs.GetString("PAngebot" + i); string kAngebot = PlayerPrefs.GetString("KAngebot" + i); string MgAngebot = PlayerPrefs.GetString("MgAngebot" + i); switch (Kultur) { case "Mais": n = 110 * PlayerPrefs.GetFloat("Fläche" + i); p = 0.58 * 110; k = 1.3 * 110; mg = 0.13 * 110; PlayerPrefs.SetString("nBedarf" +i, n.ToString()); PlayerPrefs.SetString("pBedarf" + i, p.ToString()); PlayerPrefs.SetString("kBedarf" + i, k.ToString()); PlayerPrefs.SetString("mgBedarf" + i, mg.ToString()); break; case "Wintergerste": n = 140 * PlayerPrefs.GetFloat("Fläche" + i); p = 0.58 * 60; k = 1.3 * 60; mg = 0.13 * 60; PlayerPrefs.SetString("nBedarf" +i, n.ToString()); PlayerPrefs.SetString("pBedarf" + i, p.ToString()); PlayerPrefs.SetString("kBedarf" + i, k.ToString()); PlayerPrefs.SetString("mgBedarf" + i, mg.ToString()); break; case "Winterweizen": n = 140 * PlayerPrefs.GetFloat("Fläche" + i); p = 0.58 * 60; k = 1.3 * 60; mg = 0.13 * 60; PlayerPrefs.SetString("nBedarf" +i, n.ToString()); PlayerPrefs.SetString("pBedarf" + i, p.ToString()); PlayerPrefs.SetString("kBedarf" + i, k.ToString()); PlayerPrefs.SetString("mgBedarf" + i, mg.ToString()); break; } string nBedarf = PlayerPrefs.GetString("NBedarf" + i); string pBedarf = PlayerPrefs.GetString("PBedarf" + i); string kBedarf = PlayerPrefs.GetString("KBedarf" + i); string mgBedarf = PlayerPrefs.GetString("MgBedarf" + i); HighscoreEintrag4 neuerEintrag = new HighscoreEintrag4(Parzellenname, Fläche, Kultur, StringToDouble(nAngebot), StringToDouble(pAngebot), StringToDouble(kAngebot), StringToDouble(MgAngebot), StringToDouble(nBedarf), StringToDouble(pBedarf), StringToDouble(kBedarf), StringToDouble(mgBedarf)); return neuerEintrag; } }
×
×
  • Neu erstellen...