Genera números aleatorios en Unity3D
Este tutorial explicará los métodos para generar números aleatorios en unity3d. Implementaremos generadores de números aleatorios con tipos de retorno float
e int
y veremos sus comportamientos de ejecución con ejemplos.
Generador de números aleatorios en Unity3D
El UnityEngine.Random
proporciona un método integrado, Range()
, para generar números aleatorios. Desafortunadamente, el método Range()
se ha sobrecargado para los tipos de datos int
y float
en unity3d.
Puede invocar este método pasando los tipos de datos float
o int
como parámetros. Los parámetros de esta función definen el rango de números aleatorios especificando un límite superior e inferior.
Aquí está la definición de la función UnityEngine.Random.Range
para el tipo de retorno flotante
:
public static float Range(float minValue, float maxValue);
El método Rango()
devuelve un número flotante
aleatorio dentro de [minValue to maxValue]
. Este método intercambia los valores si maxValue
es menor que minValue
.
El método float
Range()
incluye límites inferior y superior. Por ejemplo, Random.Range(1.2f,5.2f)
devuelve un número entre 1.2
y 5.2
, incluidos los extremos.
Aquí está la definición de la función UnityEngine.Random.Range
para el tipo de retorno int
:
public static int Range(int minValue, int maxValue);
Este método devuelve un número entero aleatorio dentro del rango [minValue to maxValue]
. Los siguientes comportamientos son cómo se ejecutará este método:
- El límite superior no está incluido en este método. Por ejemplo,
Random.Range(-5, 5)
devuelve un valor entre-5
y4
. - Si tanto
minValue
comomaxValue
son iguales, se excluye el límite superior y el método devuelve el límite inferior, es decir,minValue
. - Si
maxValue
es menor queminValue
, los números se intercambian automáticamente.
Implementaremos ambos métodos en el proyecto Unity3D. A continuación se muestra la demostración completa de la implementación de estas funciones. Pero, primero, sigamos el proceso paso a paso.
-
Crear nuevo proyecto
Cree un nuevo proyecto de unidad. Se creará una escena de muestra de forma predeterminada.
-
Crear objeto de juego 3D
Cree cualquier objeto de juego 3D en la escena haciendo clic derecho en la ventana de jerarquía.
-
Cree un script C# para generar un generador de números aleatorios
flotante
Cree un nuevo script de C# haciendo clic con el botón derecho en la ventana Proyecto. Luego, escriba el siguiente fragmento de código en el script recién creado.
El siguiente fragmento de código muestra un generador de números aleatorios “flotante”. Este fragmento de código mueve el
gameObject
en ladirección x
al agregar un número aleatorio generado dentro del rango de-5.0
y5.0
.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); } } }
-
Adjuntar secuencia de comandos al objeto del juego
Adjunte el guión al objeto del juego creado en la escena. Luego, pase el objeto del juego al script arrastrándolo desde la jerarquía.
-
Ejecutar juego
Ejecute el juego y presione el botón
Mover
en la Vista del juego para cambiar la posición del objeto del juego. -
Crear objeto de juego vacío
Cree el objeto de juego vacío en la escena para implementar el generador de números aleatorios de tipo entero.
-
Cree un nuevo script C# para generar un generador de números aleatorios
int
Vuelva a crear un nuevo script de C# y escriba el siguiente código en el script. Esta valla de código genera un número aleatorio entre
1
y4
(números enteros) e imprime los valores ordenados de forma descendente, incluido0
.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); } } }
-
Adjuntar script a objeto vacío
Adjunte el script anterior a un objeto de juego vacío creado en la escena.
-
Ejecutar juego
Ejecute el juego y verifique la ventana de la consola para ver el resultado. Puede ver Generador de números aleatorios de Unity3D para obtener más detalles.