peachplayer Geschrieben 12. Juni 2021 Melden Share Geschrieben 12. Juni 2021 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 13. Juni 2021 Melden Share Geschrieben 13. Juni 2021 Ohne jetzt deinen Code wirklich gelesen zu haben: Verstehe ich deine Frage richtig, dass du je einen Pseudo-Zufallswert für einen bestimmten Tag des Jahres haben willst? In dem Fall einfach einen Hash aus einem Datum berechnen (lassen) und diesen als Random Seed benutzen: var date = DateTime.Today; // So als Beispiel. var hash = date.HashCode(); // HashCode als Beispiel - aber man müsste ggf schauen, ob das auch auf verschiedenen Plattformen gleich ist Random.InitState(hash); var todaysEvent = availableEvents[Random.Range(0, availableEvents.Length)]; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.