数値が重複せずに、一つずつランダム出力(シャッフル)できるようにしましょう。
今回の例では、クリックするたびに1~10の乱数を出力しますが、一度出たものがもう一度出ることはありません。
関連記事:
数字をシャッフルする
シャッフル(重複せずにランダム抽出)
シャッフル - 重複なしでオブジェクトを並べる
ランダムで同じ数字を出さない
空のオブジェクトを作成します。
ShuffleScript.csを作成し、GameObject(空のオブジェクト)に追加します。
ShuffleScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShuffleScript : MonoBehaviour { public List<int> myList; int number; void Start() { //1~10までをリストに格納 for (int i=1; i<11; i++) { myList.Add(i); } } void Update() { if(Input.GetMouseButtonDown(0)) { if(myList.Count > 0) { ShuffleRun(); } } } void ShuffleRun() { //1~10の乱数を取得 number = Random.Range(1, 11); //リストに含まれていれば、該当の要素を削除 if(myList.Contains(number)) { Debug.Log(number); int index = myList.IndexOf(number); myList.RemoveAt(index); } //含まれてなければ、再実行 else { ShuffleRun(); } } } |
ゲームプレイして、画面をクリックしましょう。
クリックするたびに、1~10の数字がコンソールに表示され、同じ数が重複して出てくることはありません。
10個の数字がすべて出れば、それ以上は表示されません。