Jump to content
Unity Insider Forum

peachplayer

Members
  • Posts

    229
  • Joined

  • Last visited

  • Days Won

    2

peachplayer last won the day on January 26

peachplayer had the most liked content!

Recent Profile Visitors

2,078 profile views

peachplayer's Achievements

Advanced Member

Advanced Member (3/3)

5

Reputation

  1. 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
  2. habe gelesen, dass statische Klassen nicht instanziert werden können. Wie soll man dann auf eine liste zugreifen können?
  3. 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
  4. ich wollte das Problem eigentlich mit einer statischen Klasse lösen, jedoch kommt dann eine Fehlermeldung wegen unerlaubtem Zugriff. Gruss, peachplayer
  5. warum? Das ist doch gerade das andere Script auf deren liste ich zugreifen möchte!
  6. 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
  7. 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
  8. 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
  9. 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
  10. danke für die Antwort! Jetzt funktioniert die Stoppfunktion! Gruss, peachplayer
  11. Leider funktioniert die Stop-funktion nicht!
  12. using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using UnityEngine; using UnityEngine.UI; public class mytimer_class : MonoBehaviour { float cntdnw = 1.0f; public Text disvar; public Button startButton; public Button stoppButton; private void Start() { startButton = GameObject.Find("start_button").GetComponent<Button>(); stoppButton = GameObject.Find("stopp_button").GetComponent<Button>(); } public void Startbutton() { startButton.enabled = true; stoppButton.enabled = false; } public void Stoppbutton() { stoppButton.enabled = true; startButton.enabled = false; } void Update() { if ((startButton.enabled)) { cntdnw += Time.deltaTime; Time.timeScale = 0.5f; double b = System.Math.Round(cntdnw, 2); string dateTimeString = System.String.Format("{0:yyyy-MM-dd-hh}", b); disvar.text = TimeSpan.FromDays(b).ToString(); } if (stoppButton.enabled) { Debug.Log("game stopped!"); Time.timeScale = 0.0f; } } } Habs nochmals korrigiert, das korrekte Script sieht wie folgt aus.
  13. Hallo Leute Ich versuche mit folgendem Script einen Timer zu programmieren. Leider läuft das nicht richtig, d.h. der Timer stoppt gar nicht sondern läuft immer weiter. Woran könnte das liegen? Gruss, Peachplayer using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class mytimer_class : MonoBehaviour { public Button btn1, btn2; bool timerActive = false; float cntdnw = 1.0f; public Text disvar; public DateTime dt; public Date_class Datum_neu; // Use this for initialization void Start() { btn1 = GameObject.Find("start_button").GetComponent<Button>(); btn2 = GameObject.Find("stop_button").GetComponent<Button>(); } public void starttimer() { string timer_stop = Datum_neu.Datum.ToShortDateString(); // dt = new DateTime(2021, 01, 01).AddDays(Convert.ToDouble(timer_stop)); // Debug.Log(timer_stop); btn2.interactable = true; btn1.enabled = true; btn2.enabled = false; timerActive = true; } public void stopptimer() { btn1.interactable = true; btn2.enabled = true; btn1.enabled = false; timerActive = false; string timer_stop = Datum_neu.Datum.ToShortDateString(); disvar.text = Datum_neu.Datum.ToShortDateString(); } // Update is called once per frame void Update() { if (timerActive == true) { cntdnw += Time.deltaTime; double b = System.Math.Round(cntdnw, 2); string dateTimeString = System.String.Format("{0:yyyy-MM-dd-hh}", b); var time = new DateTime(Convert.ToInt64(b)); dt = new DateTime(2021, 01, 01).AddDays(b); Datum_neu.Datum = dt; // PlayerPrefs.SetString("stopped_time", dt.ToShortDateString()); //DateTime dt = DateTime.FromOADate(b); disvar.text = (Datum_neu.Datum.ToString()); Debug.Log(Datum_neu.Datum); } else if (timerActive == false) { disvar.text = "Game stopped...."; disvar.text = Datum_neu.Datum.ToShortDateString(); } } }
×
×
  • Create New...