Unity 6.3
0 онлайн 36 гостей 3 в системе
Вход

Random.InitState

Declaration

public static void InitState(int seed);

Параметры

Параметр Описание
семена Семя используется для инициализации генератора случайных чисел.

Описание

Инициализирует состояние генератора случайных чисел заданным зерном.

Генератор случайных чисел не является по-настоящему случайным, но производит числа в предопределенной последовательности (значения в последовательности "прыгают" по диапазону таким образом, что они выглядят случайными для большинства целей).

Точка в последовательности, в которой начинается определенный поток псевдослучайных значений, выбирается с помощью целого числа, называемого семена значение. Благодаря этому при каждом запуске игры создаётся новая последовательность значений и игровой процесс остаётся непредсказуемым. Иногда требуется воспроизводить одну и ту же последовательность псевдослучайных значений; для этого задайте начальное значение самостоятельно.

Вы можете установить свой собственный seed, например, при процедурном генерировании уровня игры. Вы можете использовать случайно выбранные элементы, чтобы Scene выглядел произвольно и естественно, но установить seed на предустановленное значение перед генерацией. Это обеспечит, что один и тот же "случайный" шаблон будет создаваться каждый раз, когда игра будет играться. Это часто может быть эффективным способом уменьшить требования к памяти игры — вы можете генерировать столько уровней, сколько хотите процедурно и хранить каждый из них, используя не более чем целое значение seed.

Семена случайно инициализируются при запуске (см. Random для более подробной информации об этом) но если вы хотите рандомизировать его позже, вы можете использовать Random.InitState((int)DateTime.Now.Ticks).

Зерно нельзя получить обратно после установки: алгоритм псевдослучайных чисел хранит своё внутреннее состояние в более сложном наборе чисел. Однако это состояние можно загружать и сохранять через state свойство, которое работает с непрозрачным, но сериализуемым State.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { private float[] noiseValues; void Start() { Random.InitState(42); noiseValues = new float[10]; for (int i = 0; i < noiseValues.Length; i++) { noiseValues[i] = Random.value; Debug.Log(noiseValues[i]); } } }