Jump to content
Unity Insider Forum

peachplayer

Members
  • Posts

    232
  • Joined

  • Last visited

  • Days Won

    2

peachplayer last won the day on January 26 2021

peachplayer had the most liked content!

About peachplayer

Recent Profile Visitors

2,204 profile views

peachplayer's Achievements

Advanced Member

Advanced Member (3/3)

5

Reputation

  1. Hallo Leute weiss jemand warum meine Inventar-liste beim Verkauf nicht reduziert wird? nur die Buttons in der ListBox(blau) werden entfernt, der rest bleibt immer gleich, resp. alle Maschinen werden nach einem Klick auf den Button 'verkaufen' auf einmal gelöscht. Siehe Bild! Ich verwende folgenden Code: public void RemoveSelected() { List<Inventory1> liste1 = MyXML.DeserializeFromXML<Inventory1>(".\\Maschinen.xml"); MaschinenAnzeige = ""; foreach (Inventory1 item1 in liste1) { MaschinenAnzeige += item1.Maschinennamen + item1.Menge + "\n"; } Debug.Log(MaschinenAnzeige); Maschinenanzeige.text = MaschinenAnzeige; Anzeige(); Transform t = content.transform.GetChild(selectedIndex); foreach (Inventory1 Inventory1Item in liste1) { if (FindIndex(t.gameObject) < -1 || FindIndex(t.gameObject) >= options.Count) return; else { // Remove UI component Destroy(t.gameObject); RemoveItem(Inventory1Item); options.RemoveAt(selectedIndex); Anzeige(); Debug.Log("selectedIndex = " + selectedIndex); } } } private int FindMaschinen_index(Inventory1 item) { int i = 0; foreach (Inventory1 Inventory1Item in liste1) { if (Inventory1Item.Maschinennamen == item.Maschinennamen) { return i; } i++; } return -1; } public void RemoveItem(Inventory1 item) { if (item.Menge > 0) { item.Menge--; Bargeld += item.Preis; } if (item.Menge == 0) { Bargeld += item.Preis; liste1.Remove(item); } }
  2. 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)); } }
  3. Hallo Leute Weiss jemand, wie man eine .xml-datei in einem spezifischem Ordner abspeichern kann? Gruss, peachplayer
  4. 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
  5. habe gelesen, dass statische Klassen nicht instanziert werden können. Wie soll man dann auf eine liste zugreifen können?
  6. meine Frage: ist es grundsätzlich überhaupt möglich von Skript A auf ein Listen-Objekt in Skript B zuzugreifen? Oder muss man zuerst via .XML abspeichern? Gruss, peachplayer
  7. ich wollte das Problem eigentlich mit einer statischen Klasse lösen, jedoch kommt dann eine Fehlermeldung wegen unerlaubtem Zugriff. Gruss, peachplayer
  8. warum? Das ist doch gerade das andere Script auf deren liste ich zugreifen möchte!
  9. danke für den Tipp! Es kommt jetzt eigentlich gar keine Fehlermeldung mehr sondern es wird einfach kein neuer Eintrag gemacht. Der Code sieht folgendermassen aus: if (Nummer == index_berechnen(Parzellenname) && Datum1.Year == 2018 + index2) { var component = content.GetComponent<rotate_object1>(); foreach (Inventory2 item1 in component.liste4) { if (item1.Maschinenname == "Tracktor" && item1.Menge >= 1) liste1.Add(neuerEintrag = new Dünger { Nummer = Nummer, Parzellenname = Parzellenname, Erlös = Erlös, Fläche = Fläche, Menge = Menge, Kosten = Kosten, Düngersorte = Düngersorte, Kultur = Kultur, Datum = Datum }); } return neuerEintrag; } } Gruss, peachplayer
  10. Hallo Leute Ich versuche mit folgendem Code auf die Liste eines anderen Scripts zuzugreifen, leider funktioniert das bisher nicht: if (Nummer == index_berechnen(Parzellenname) && Datum1.Year == 2018 + index2) { var component = content.GetComponent<rotate_object1>(); foreach (Inventory2 item1 in component.liste1) { if (item1.Maschinenname == "Düngerstreuer" && item1.Menge >= 1) liste1.Add(neuerEintrag = new Dünger { Nummer = Nummer, Parzellenname = Parzellenname, Erlös = Erlös, Fläche = Fläche, Menge = Menge, Kosten = Kosten, Düngersorte = Düngersorte, Kultur = Kultur, Datum = Datum }); } return neuerEintrag; } } Kann mir jemand helfen? Gruss, peachplayer
  11. 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
  12. 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
  13. danke für die Antwort! Jetzt funktioniert die Stoppfunktion! Gruss, peachplayer
×
×
  • Create New...