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-5
und4
zurück. - Wenn sowohl
minValue
als auchmaxValue
gleich sind, wird die Obergrenze ausgeschlossen und die Methode gibt die Untergrenze zurück, d. h.minValue
. - Wenn
maxValue
kleiner alsminValue
ist, 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
float
zu 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 dasgameObject
in diex-Richtung
, indem es eine Zufallszahl hinzufügt, die im Bereich von-5.0
und5.0
generiert 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
int
zu generierenErstellen Sie erneut ein neues C#-Skript und schreiben Sie den folgenden Code in das Skript. Dieser Code-Fence generiert eine Zufallszahl zwischen
1
und4
(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.