Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты
public static Random.State state;

Описание

Получает или задает полное внутреннее состояние генератора случайных чисел.

Это свойство можно использовать для сохранения и восстановления ранее сохраненного состояния генератора случайных чисел. Обратите внимание, что state можно сериализовать, так что детерминизм могут быть сохранены между сеансами. Детерминизм — важная черта во многих сценариях, таких как многопользовательские игры, воспроизводимые симуляции и модульное тестирование.

Состояние генератора можно (повторно) инициализировать двумя способами:

  1. Вызовите InitState с простым целым числом "seed". Это односторонняя операция, и ее нельзя получить.
  2. Установка состояния с использованием состояния, ранее полученного из этого же свойства. Этот тип не может быть создан пользователем.

В следующем примере показано, как это работает.

using UnityEngine; public class ExampleClass : MonoBehaviour { void Start() { const int initialSeed = 1234; Random.InitState(initialSeed); // cannot be retrieved PrintRandom("Step 1"); PrintRandom("Step 2"); Random.State stateBeforeStep3 = Random.state; // can be serialized PrintRandom("Step 3"); PrintRandom("Step 4"); Random.state = stateBeforeStep3; PrintRandom("Step 5"); PrintRandom("Step 6"); Random.InitState(initialSeed); PrintRandom("Step 7"); PrintRandom("Step 8"); } static void PrintRandom(string label) => Debug.Log($"{label} - RandomValue {Random.Range(0, 100)}"); } /* Output: Step 1 - RandomValue 38 Step 2 - RandomValue 76 Step 3 - RandomValue 69 Step 4 - RandomValue 11 Step 5 - RandomValue 69 Step 6 - RandomValue 11 Step 7 - RandomValue 38 Step 8 - RandomValue 76 */

Значения на шагах 5 и 6 будут равны значениям на шагах 3 и 4, поскольку внутреннее состояние генератора было восстановлено до того состояния, которое мы сохранили в stateBeforeStep3. Кроме того, значения из шагов 7 и 8 будут равны значениям из шагов 1 и 2, потому что мы сбрасываем состояние генератора с помощью initialSeed через InitState, что оставляет генератор в том же состоянии, что и непосредственно перед шагом 1.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3