Jump to content
Unity Insider Forum

zufällige Ereignisse


peachplayer

Recommended Posts

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)];

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...