C#で配列をランダムにソート(=シャッフル)する方法の紹介です。
using〜の2行を追加するのを忘れないようにしてください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;//追加
using System.Linq;//追加
public class Sample : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int[] array = { 1, 2, 3, 4, 5};
//シャッフル
array = array.OrderBy(x => Guid.NewGuid()).ToArray();
//コンソールに出力して確認
for(int i = 0; i < array.Length; i++)
{
Debug.Log(array[i]);
}
}
}
<生徒向けの情報>
神経衰弱でのトランプの配置に使います。ゲームオブジェクト型の配列を宣言し、各要素にトランプのプレハブを代入し、シャッフルします。
代入はインスペクターから行います。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;//追加
using System.Linq;//追加
public class GameManager : MonoBehaviour
{
public GameObject[] cards = new GameObject[6];//カードを入れる配列の宣言
// Start is called before the first frame update
void Start()
{
//シャッフル
cards = cards.OrderBy(x => Guid.NewGuid()).ToArray();
int i = 0;//配列cardsのindex
for (int yi = 0; yi < 2; yi++)//yi行目
{
for (int xi = 0; xi < 3; xi++)//xi列目
{
Instantiate(cards[i], new Vector3(-400 + xi * 400, 200 - yi * 400, 0), cards[i].transform.rotation);
i++;
}
}
}
// Update is called once per frame
void Update()
{
}
}
実行毎に配置が変わる。