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

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

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

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

Q&A

解決済

1回答

1917閲覧

Unity enumがちゃんと動いていない?

fukkun0412

総合スコア37

Unity

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

0グッド

0クリップ

投稿2016/05/25 17:55

私は今、ステージセレクトのプログラムを組んでおります。
ソースを転記しておきます。
/==============================================
// 列挙型
==============================================
/
public enum STAGESELECT_MODE{
STAGE, SHOP, MODE, DIFFICULTY,
}
public enum STAGE{
STAGE1, STAGE2, STAGE3,MAX_STAGE
}
public enum DIFFICULTY{
EASY,NORMAL,HARD
}
public STAGESELECT_MODE stageselect_Mode = STAGESELECT_MODE.STAGE;
public STAGE stage_No = STAGE.STAGE1;
public DIFFICULTY difficulty_No = DIFFICULTY.EASY;

/// <summary>
/// ステージセレクトの主な動き
/// </summary>
public void StageSelect_Main()
{
switch(stageselect_Mode)
{
case STAGESELECT_MODE.STAGE:
StageSelect_Stage();
break;

case STAGESELECT_MODE.DIFFICULTY: break; } } /// <summary> /// ステージセレクトのステージ・おみせ・モード画面の選択 /// </summary> public void StageSelect_Stage() { if (Input.GetKeyDown(KeyCode.UpArrow)) { if (stageselect_Mode == STAGESELECT_MODE.SHOP) { stageselect_Mode = STAGESELECT_MODE.STAGE; stage_No = STAGE.STAGE1; cursor.MoveCursol(cursor_pos_x[0], cursor_pos_y[0]); } else if (stageselect_Mode == STAGESELECT_MODE.MODE) { stageselect_Mode = STAGESELECT_MODE.STAGE; stage_No = STAGE.STAGE3; cursor.MoveCursol(cursor_pos_x[2], cursor_pos_y[2]); } } if (Input.GetKeyDown(KeyCode.DownArrow)) { if (stageselect_Mode == STAGESELECT_MODE.STAGE) { if (stage_No == STAGE.STAGE1 || stage_No == STAGE.STAGE2) { stageselect_Mode = STAGESELECT_MODE.SHOP; cursor.MoveCursol(cursor_pos_x[3], cursor_pos_y[3]); } else if (stage_No == STAGE.STAGE3) { stageselect_Mode = STAGESELECT_MODE.MODE; cursor.MoveCursol(cursor_pos_x[4], cursor_pos_y[4]); } } } if (Input.GetKeyDown(KeyCode.LeftArrow)) { if (stageselect_Mode == STAGESELECT_MODE.STAGE) { if (stage_No == STAGE.STAGE2) { stage_No = STAGE.STAGE1; cursor.MoveCursol(cursor_pos_x[0], cursor_pos_y[0]); } else if (stage_No == STAGE.STAGE3) { stage_No = STAGE.STAGE2; cursor.MoveCursol(cursor_pos_x[1], cursor_pos_y[1]); } } else if(stageselect_Mode == STAGESELECT_MODE.MODE) { stageselect_Mode = STAGESELECT_MODE.SHOP; cursor.MoveCursol(cursor_pos_x[3], cursor_pos_y[3]); } } if (Input.GetKeyDown(KeyCode.RightArrow)) { if (stageselect_Mode == STAGESELECT_MODE.STAGE) { if (stage_No == STAGE.STAGE1) { stage_No = STAGE.STAGE2; cursor.MoveCursol(cursor_pos_x[1], cursor_pos_y[1]); } else if (stage_No == STAGE.STAGE2) { stage_No = STAGE.STAGE3; cursor.MoveCursol(cursor_pos_x[2], cursor_pos_y[2]); } } else if (stageselect_Mode == STAGESELECT_MODE.SHOP) { stageselect_Mode = STAGESELECT_MODE.MODE; cursor.MoveCursol(cursor_pos_x[4], cursor_pos_y[4]); } } //決定キーで難易度選択へ if (Input.GetKeyDown(KeyCode.Keypad5) || Input.GetKeyDown(KeyCode.Alpha5)) { stageselect_Mode = STAGESELECT_MODE.DIFFICULTY; } }

cursor.MoveCursolはカーソルを指定した場所に動かすプログラム。
今回のとは関係はないとみられるので割愛。
このプログラムですと、stageselect_ModeがSTAGESELECT_MODE.STAGEの場合は作動するのですが、stageselect_Modeがstageselect_Mode = STAGESELECT_MODE.MODEやstageselect_Mode == STAGESELECT_MODE.SHOPになると入力しているのにも関わらず、ちゃんと作動しないのです。

このような原因はどのようなことが考えられますか?教えて頂けないでしょうか?
詳しい解説並びにソースを書いていただくと幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

すみません。stageselect_Modeでカーソルの位置を判断していたのですが、
// <summary>
/// ステージセレクトの主な動き
/// </summary>
public void StageSelect_Main()
{
switch(stageselect_Mode)
{
case STAGESELECT_MODE.STAGE:
StageSelect_Stage();
break;

case STAGESELECT_MODE.DIFFICULTY: break; } }

上のプログラムで、stageselect_Modeを使って、switch文を転記してしまったので、STAGESELECT_MODE.SHOPやSTAGESELECT_MODE.MODEに変わるとこのswitch文にないところにいってしまうのが判明しました。
対策は上のソースのswitch文の分けるところをstageselect_Modeからstage_modeという新しいenumの変数を作成して入力のところもstage_modeを用いてプログラムした結果、問題なく作動しました。
みなさん、すみませんでした。

投稿2016/05/25 18:20

fukkun0412

総合スコア37

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

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

退会済みユーザー

退会済みユーザー

2016/05/26 07:26

Nice!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問