Unity2dゲームの製作をしているのですが、ステージが複数あるので、
ステージセレクト画面を作成したいと考えております。
ステージセレクト自体の実装は済んでいるのですが、ボタンを押してすぐに遷移ではなくて、
1回目は選択で、2回目で初めて遷移をするという作りにしたいです。
今はこのようなソースなのですが、これだとボタンのカウントがどれを押しても1回付いてしまい、
1度目はボタン1、2度目はボタン2を押した時にボタン2は1回しか押されてないにもかかわらず、
遷移してしまうソースになっています。
1回目に押されたボタンと2回目のボタンが違うとカウントを0にするということをしたいです。
ボタンはインスペクター上で引数を設定することができる仕様にしています。(stageNo)
ステージは4ステージで1~4の引数をそれぞれ設定できます。
ソースも冗長的でめちゃくちゃだと思うのですが、
修正や実装案などお聞かせ願えませんでしょうか?
ステージセレクトは"Unityの教科書 Unity2017完全対応版"を参考にさせて頂いています。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class StageSelectManager : MonoBehaviour { //ステージ選択ボタン配列 public GameObject[] stageButtons; //2回タップ遷移 int buttonTapCount = 0; bool switch1 = false; bool switch2 = false; bool switch3 = false; bool switch4 = false; // Use this for initialization void Start() { //どのステージまでクリアしているのか int clearStageNo = PlayerPrefs.GetInt("CLEAR", 0); //ステージボタンを有効化 for (int i = 0; i <= stageButtons.GetUpperBound(0); i++) { bool b; if (clearStageNo < i) { //前ステージをクリアしていなければ無効 b = false; } else { //クリアしていれば有効 b = true; } //ボタンの有効/無効を設定 stageButtons[i].GetComponent<Button>().interactable = b; } } // Update is called once per frame void Update() { } public void PushStageSelectButton(int stageNo) { switch (stageNo) { case 1: switch1 = true; switch2 = false; switch3 = false; switch4 = false; break; case 2: switch2 = true; switch1 = false; switch3 = false; switch4 = false; break; case 3: switch3 = true; switch1 = false; switch2 = false; switch4 = false; break; case 4: switch4 = true; switch1 = false; switch2 = false; switch3 = false; break; default: switch1 = false; switch2 = false; switch3 = false; switch4 = false; break; } if (switch1 == true) { //ゲームシーンへ SceneManager.LoadScene("GameScene" + stageNo); buttonTapCount = 0; switch1 = false; switch2 = false; switch3 = false; switch4 = false; } if (switch2 == true) { //ゲームシーンへ SceneManager.LoadScene("GameScene" + stageNo); buttonTapCount = 0; switch1 = false; switch2 = false; switch3 = false; switch4 = false; } if (switch3 == true) { //ゲームシーンへ SceneManager.LoadScene("GameScene" + stageNo); buttonTapCount = 0; switch1 = false; switch2 = false; switch3 = false; switch4 = false; } if (switch4 == true) { //ゲームシーンへ SceneManager.LoadScene("GameScene" + stageNo); buttonTapCount = 0; switch1 = false; switch2 = false; switch3 = false; switch4 = false; } buttonTapCount++; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/11 03:29