版本:Unity 6 (6000.0)
语言英语
  • C#

Random.InitState

建议更改

成功!

感谢您帮助我们改善 Unity 文档的品质。虽然我们无法接受所有提交内容,但是我们确实会阅读我们用户提出的每项建议的更改,并在合适的地方进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请在几分钟后<a>重试</a>。感谢您花时间帮助我们改善 Unity 文档的品质。

关闭

取消

切换到手册

声明

public static void InitState(int 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]); } } }