青空の月

Unity, C#, アプリ開発関連について。

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