Unity事例ノート

UNITY

重複せずランダムでオブジェクトを並べる

ランダムで出した数の中で、一度使った数を除外することで、重複無しの結果を導き出しましょう。

実行するたびに、5つのオブジェクトがランダムで積み上がりますが、同じCubeは存在しません。

このように、オブジェクトをシャッフルして配置できる仕組みを作ります。

関連記事:
重複無しでリストからランダム抽出(シャッフル)
種類の違うPrefabをランダムで出現させる
ランダム表示したPrefabを順に配列に入れる
10分の1の確率で異なるPrefabを生成





重複した数値をリストから除外

空のオブジェクを作成します。

Cubeを作成して、名前をCube1に変更。

Cube1を複製して、Cube2~4も作成します。

わかりやすいように、Cube1~5に色をつけます。

Cube1~5をプロジェクトビューにドラッグ&ドロップして、Prefab化します。

Cube1~5の元データは削除しておきます。

ObjScript.csを作成し、GameObjectに追加します。

MyArrayの要素の中に、Cube1~5を入れます。

何度かゲームプレイしてみましょう。

スタートするたびに、Cubeの種類がランダムで変わりますが、同じ種類のCubeは存在しません。

myArray(配列)の中に、あらかじめ5個のCubeを登録。

foreace文を使って、5個すべてのCubeを、myList(リスト)に追加。

リストは、要素を消し込んでいけるため、一度ランダムで出力したものは、都度リストから除外しています。

関連記事:
重複無しでリストからランダム抽出(シャッフル)
種類の違うPrefabをランダムで出現させる
ランダム表示したPrefabを順に配列に入れる
10分の1の確率で異なるPrefabを生成