Generieren Sie Zufallszahlen in Unity3D
In diesem Tutorial werden die Methoden zum Generieren von Zufallszahlen in unity3d erläutert. Wir werden Zufallszahlengeneratoren mit den Rückgabetypen float und int implementieren und ihr Ausführungsverhalten anhand von Beispielen untersuchen.
Zufallszahlengenerator in Unity3D
Die UnityEngine.Random bietet eine eingebaute Methode, Range(), um Zufallszahlen zu generieren. Leider wurde die Methode Range() für die Datentypen int und float in unity3d überladen.
Sie können diese Methode aufrufen, indem Sie die Datentypen float oder int als Parameter übergeben. Die Parameter dieser Funktion definieren den Bereich der Zufallszahlen, indem sie eine Unter- und Obergrenze angeben.
Hier ist die Definition der Funktion UnityEngine.Random.Range für den Rückgabetyp float:
public static float Range(float minValue, float maxValue);
Die Methode Range() gibt eine zufällige float-Zahl innerhalb von [minValue to maxValue] zurück. Diese Methode tauscht die Werte, wenn maxValue kleiner als minValue ist.
Die Methode float Range() enthält Unter- und Obergrenzen. Zum Beispiel gibt Random.Range(1.2f,5.2f) eine Zahl zwischen 1.2 und 5.2 zurück, inklusive der Extrema.
Hier ist die Definition der Funktion UnityEngine.Random.Range für den Rückgabetyp int:
public static int Range(int minValue, int maxValue);
Diese Methode gibt eine zufällige ganze Zahl innerhalb des Bereichs [minValue to maxValue] zurück. Die folgenden Verhaltensweisen zeigen, wie diese Methode ausgeführt wird:
- Die Obergrenze ist in dieser Methode nicht enthalten. Zum Beispiel gibt
Random.Range(-5, 5)einen Wert zwischen-5und4zurück. - Wenn sowohl
minValueals auchmaxValuegleich sind, wird die Obergrenze ausgeschlossen und die Methode gibt die Untergrenze zurück, d. h.minValue. - Wenn
maxValuekleiner alsminValueist, werden die Zahlen automatisch vertauscht.
Wir werden diese beiden Methoden im Unity3D-Projekt implementieren. Es folgt die vollständige Demonstration der Implementierung dieser Funktionen. Aber lassen Sie uns zuerst den Prozess Schritt für Schritt verfolgen.
-
Neues Projekt erstellen
Erstellen Sie ein neues Unity-Projekt. Standardmäßig wird eine Beispielszene erstellt.
-
Erstellen Sie ein 3D-Spielobjekt
Erstellen Sie ein beliebiges 3D-Spielobjekt in der Szene, indem Sie mit der rechten Maustaste in das Hierarchiefenster klicken.

-
Erstellen Sie ein C#-Skript, um den Zufallszahlengenerator
floatzu generierenErstellen Sie ein neues C#-Skript, indem Sie mit der rechten Maustaste in das Projektfenster klicken. Schreiben Sie dann den folgenden Codeausschnitt in das neu erstellte Skript.

Das folgende Code-Snippet zeigt einen
float-Zufallszahlengenerator. Dieses Code-Snippet bewegt dasgameObjectin diex-Richtung, indem es eine Zufallszahl hinzufügt, die im Bereich von-5.0und5.0generiert wird.using System.Collections; using System.Collections.Generic; using UnityEngine; public class RandomNumberGenerator : MonoBehaviour { public GameObject gameObject; float xOffset = 0.0f; void OnGUI() { xOffset = Random.Range(-5.0f, 5.0f); if (GUI.Button(new Rect(10, 300, 100, 50), "MOVE")) { gameObject.transform.position = new Vector3(gameObject.transform.position.x + xOffset, gameObject.transform.position.y, gameObject.transform.position.z); } } } -
Skript an Spielobjekt anhängen
Hängen Sie das Skript an das in der Szene erstellte Spielobjekt an. Übergeben Sie dann das Spielobjekt an das Skript, indem Sie es aus der Hierarchie ziehen.

-
Spiel ausführen
Führen Sie das Spiel aus und drücken Sie in der Spielansicht auf die Schaltfläche
Verschieben, um die Position des Spielobjekts zu ändern. -
Erstellen Sie ein leeres Spielobjekt
Erstellen Sie das leere Spielobjekt in der Szene, um den Zufallszahlengenerator vom Integer-Typ zu implementieren.

-
Erstellen Sie ein neues C#-Skript, um den Zufallszahlengenerator
intzu generierenErstellen Sie erneut ein neues C#-Skript und schreiben Sie den folgenden Code in das Skript. Dieser Code-Fence generiert eine Zufallszahl zwischen
1und4(ganzzahlige Zahlen) und druckt die absteigend geordneten Werte, inklusive0.using System.Collections; using System.Collections.Generic; using UnityEngine; public class IntRNG : MonoBehaviour { void Start() { int x = Random.Range(1, 5); for (int i = x; i >= 0; i--) { print(i); } } } -
Skript an leeres Objekt anhängen
Hängen Sie das obige Skript an ein leeres Spielobjekt an, das in der Szene erstellt wurde.

-
Spiel ausführen
Führen Sie das Spiel aus und überprüfen Sie das Konsolenfenster, um die Ausgabe zu sehen. Weitere Einzelheiten finden Sie unter Unity3D-Zufallszahlengenerator.