質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

3158閲覧

ENUMをランダムで使う方法

reezunkannsenn

総合スコア1

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/08/09 18:39

編集2020/08/09 18:41

ENUMをランダムで回したいのですが、数字だけしか取り扱えないみたいなので置き換わるようなものを知りたいです

理由:パッと見で見やすくするためにENUMを使いたいです

とりあえず書いてみたものなんですがこの状態だと条件判定のためにENUMを宣言したのに、結局数値でランダム化しているので定義した意味がないような感じになっています。
どうすれば数値ではなくENUMを使ったランダムに置き換えれるのか教えていただきたいです。

using

1using System.Collections.Generic; 2using System.Runtime.InteropServices.ComTypes; 3using UnityEngine; 4public class Stage : MonoBehaviour 5{ 6 [SerializeField] 7 GameObject[] stageObj; //ステージ情報 8 GameObject insStage; //決定生成物 9 GameObject nowStagePosition; //現在地 10 enum direction 11 { 12 north, 13 south, 14 east, 15 west 16 } 17 void Start() 18 { 19 int number; 20 for (int i = 0; i > stageObj.Length; i++) //ステージ配列の生成 21 { 22 number = Random.Range(0, stageObj.Length); //ランダム生成 23 insStage = stageObj[number]; //生成ブロックの決定 24 Instantiate(insStage.); //生成 25 } 26 } 27 void InsStageObj() 28 { 29 int number; 30 for (int i = 0; i > stageObj.Length; i++) //ステージ配列の生成 31 { 32 number = Random.Range(0, stageObj.Length); //ランダム生成 33 insStage = stageObj[number]; //生成ブロックの決定 34 Instantiate(insStage.); //生成 35 } 36 } 37 void Direction() 38 { 39 int direNum; 40 direNum = Random.direction; 41 switch (direNum) 42 { 43 case 0: 44 { 45 direction.north 46 break; 47 } 48 case 1: 49 { 50 direction.south 51 break; 52 } 53 case 2: 54 { 55 direction.east 56 break; 57 } 58 case 3: 59 { 60 direction.west 61 break; 62 } 63 } 64 } 65} 66 67

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

例えば、こんなので確認できます。

C#

1var rand = new Random(); 2 3for (int i = 0; i < 10; i++) { 4 Console.WriteLine((direction)rand.Next(sizeof(direction))); 5}

投稿2020/08/09 19:32

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

C#のenumは数値から変換できます。

数値や文字列を列挙体に変換する

なので、質問文のようなswitch文は不要です。
単純にenumが取り得る範囲のランダムな数値から変換すればいいだけです。

投稿2020/08/09 19:23

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問