Unityでランダムに重複無しでシーンを切り替えたい
問題を出すアプリを作成しているのですが、問題一つ一つにシーンを作成しており、タイトル画面から10個のシーンを重複無しで切り替えたいと思っています。
調べてみたところ、ランダムにシーンを切り替えるということを解説しているものはなく、重複無しで1~10の乱数を取得するということが出てきたので、その方面で行こうと思うのですが、
タイトル画面で乱数を取得してその順番通りに、指定したシーンを切り替えるというのは可能でしょうか?
また、どのようなスクリプトを書けば良いでしょうか。ご教授お願いいたします。
1~10のランダムの変数を取得するスクリプト
int start = 1;
int end = 10;
List<int> numbers = new List<int>(); void Start() { for (int i = start; i <= end; i++) { numbers.Add(i); } while (numbers.Count > 0) { int index = Random.Range(0, numbers.Count); int ransu = numbers[index]; Debug.Log(ransu); numbers.RemoveAt(index); } }
変数によってシーンを切り替える
if (int rainsu == 1)
{
SceneManager.LoadScene ("Ichi");
}
if (int rainsu == 2)
{
SceneManager.LoadScene ("Ni");
}
以下10まで書く。
このようなコードをタイトル画面のスタートボタンにアタッチすれば、タイトル画面から次のシーンへ行く時にランダムになると思うのですが、そこから次の問題に行く時に、タイトル画面で取得した乱数をそのまま移行させて行くことはできるのでしょうか?
また、実際に以下のコードを書いてみました。10個の乱数を取得できたのですが、Updateでtimeが1以下になったら、ransuを取得してシーンを切り替えたいのですが、現在のコンテキストにransuは存在しませんというエラーが出てしまいます。どうすればよろしいでしょうか。
int start = 1; int end = 3; List<int> numbers = new List<int>(); void Start() { while (numbers.Count > 0) { int index = Random.Range(0, numbers.Count); int ransu = numbers[index]; Debug.Log(ransu); numbers.RemoveAt(index); } } void Update(){ if (totalTime <= 1) { if (ransu == 1) { SceneManager.LoadScene("I"); } if (ransu == 2) { SceneManager.LoadScene("N"); } if (ransu == 3) { SceneManager.LoadScene("S"); } } }
回答2件
あなたの回答
tips
プレビュー