列挙型をリストとして取得

列挙型の要素をその型のリストとして取得する方法になります

列挙型を定義しているクラス

メンバー

  • ボールの色の列挙(BallColor)
  • リストとして取り出すメソッド(GetBallColors)
  • リストの中からランダムに1つ取り出すメソッド(GetRandomBallColor)
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class GameResources : MonoBehaviour
{
    public enum BallColor
    {
        red,
        blue,
        green,
        purple,
    }

    public static List<BallColor> GetBallColors()
    {
        return Enum.GetValues(typeof(BallColor)).OfType<BallColor>().ToList();
    }

    public static BallColor GetRandomBallColor()
    {
        return GetBallColors()[UnityEngine.Random.Range(0, GetBallColors().Count)];
    }
}

使い方

列挙をListとして取得

スクリプト

using UnityEngine;
using System.Collections.Generic;

public class EnumListTest : MonoBehaviour
{
    void Start()
    {
        List<GameResources.BallColor> ballColors = GameResources.GetBallColors();

        foreach (var ballColor in ballColors)
        {
            Debug.Log(ballColor);
        }
    }
}

結果

red
blue
green
purple

列挙の中からランダムに1つ取り出す

スクリプト

using UnityEngine;
using System.Collections.Generic;

public class EnumListTest : MonoBehaviour
{
    void Start()
    {
        for (int i = 0; i < 6; i++)
        {
            Debug.Log(GameResources.GetRandomBallColor());
        }
    }
}

結果

purple
blue
blue
red
blue

C#,Unity

Posted by hidepon