前進ボタンと休息ボタン
前進ボタンや休息ボタンを連打できないように、押した直後はこの二つのボタンを非表示にして、約1後に処理を実行するようにします(待機時間は効果音などに合わせて適宜調整します)。
DungeonButtonオブジェクトを作成し、前進ボタンと休息ボタンを子にしておきます。
DungeonDirector.cs
DungeonDirectorにGameObject型の変数DungeonButtonを作ってアウトレット接続しておきます。
public GameObject DungeonButton;
ダンジョンを前進したあとの処理をまとめておくメソッドを作っておきます。
問題なく前進したらボタンを表示します。
private void NextDungeon() { DungeonButton.SetActive(true); }
さらに食料が尽きてゲームオーバーになったときに呼び出すメソッドも作成しておきます(中身はのちほど処理を追加します)。
private void EndDungeon() { // のちほど実装 }
前進ボタンをタッチしたときのTouchAdvanceメソッドと前進したときのActionAdvanceメソッドをそれぞれ作ります。
ボタンをタッチしたら移動の効果音を再生し、ボタンを非表示にし、食料を1減らします。
コルーチンを使って1秒後にActionAdvanceメソッドを呼び出します。
public void TouchAdvance() { SoundManager.instance.PlayAdvanceSE(); DungeonButton.SetActive(false); GameManager.instance.PlayRecord.DungeonStatus.Food--; StartCoroutine(WaitAdvance()); IEnumerator WaitAdvance() { yield return new WaitForSeconds(1f); ActionAdvance(); } } private void ActionAdvance() { GameManager.instance.playRecord.dungeonStatus.floor++; if (GameManager.instance.playRecord.dungeonStatus.food == 0) { EndDungeon(); return; } NextDungeon(); }
前進する処理を2つのメソッドに分けているのは、今後前進ボタンを押した時に移動するアニメーション処理を追加したときに、アニメーションが終了したあとにActionAdvanceメソッド呼び出すためです。
このあたりは自分がわかりやすいように実装していけばいいと思います。
前進ボタンオブジェクトにTouchAdvanceメソッドを設定しておきます。
これでダンジョンの移動ができるようになりました。