enumの値をランダムで取得する
enumの値をランダムで取得する方法。
C#のLinqを使ってランダム取得する。結構、汎用的に使えそうなのでUtilityクラスにでも入れとくといいかも。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using System.Linq;
public class EnumRandom : MonoBehaviour {
public enum WidgetType
{
Label,
Sprite,
SlicedSprite,
TiledSprite,
FilledSprite,
SimpleTexture,
Button,
ImageButton,
}
public void Random()
{
for (int i = 0; i < 10; i++)
{
var value = RandomEnumValue();
Debug.Log(i + " " + value.ToString());
}
}
static readonly System.Random _Random = new System.Random();
public static T RandomEnumValue()
{
return Enum
.GetValues(typeof(T))
.Cast()
.OrderBy(x => _Random.Next())
.FirstOrDefault();
}
}
参考
http://stackoverflow.com/questions/3132126/how-do-i-select-a-random-value-from-an-enumeration