乱数生成器の内部状態のすべてを取得、または、設定します。
このプロパティーは通常、乱数生成器 (RNG) の以前に保存した状態を保存し、復元するために使用されます。 RNG の状態は、Random.InitState 関数を使って種 (シード) 数でイニシアライズすることもできます。しかし、以下の例で示されるように、効果はかなり異なります。
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Start() { Random.InitState(255);
PrintRandom("Step 1"); PrintRandom("Step 2");
Random.State oldState = Random.state;
PrintRandom("Step 3"); PrintRandom("Step 4");
Random.state = oldState;
PrintRandom("Step 5"); PrintRandom("Step 6");
Random.InitState(255);
PrintRandom("Step 7"); PrintRandom("Step 8"); }
void PrintRandom(string label) { Debug.Log(string.Format("{0} - RandomValue {1}", label, Random.Range(1, 100))); } }
このスクリプトを実行した後、step 5 と 6 からの乱数値は step 3 と 4 からの乱数値と同じになるという状況が見られます。なぜなら、RNG の内部の状態が Random.state プロパティーの仕様によって復元されてしまうからです。 また、Random.InitState が RNG の状態を最初のシード値で再度イニシアライズするため、step 7 と 8 からの乱数値は step 1 と 2 からのものと等しくなります。