获取或设置随机数生成器的完整内部状态。
可以使用此属性来保存和恢复随机数生成器之前保存的状态。注意,state
是可序列化的,因此可以跨会话保留确定性。确定性是许多场景中的重要特征,例如多人游戏、可重复的模拟和单元测试。
生成器状态可以通过两种方式(重新)初始化
有关这些如何工作的说明,请参阅以下示例。
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 */