今回はコンボ表示を行いたいと思います。
■前回の内容
Unityでパズドラ風3Matchパズルを作る_その5_演出編4 - スマゲ
■本編の完成イメージ
■コード確認用リポジトリ
github.com
■環境
Mac OS Sierra 10.12.4
Unity 5.6.0 f3
言語 C#
■UI表示用のクラスをつくる
スクリプト[UIManager.cs]を作成し、以下のように記述します
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; // UI関連の表示を行う public class UIManager : MonoBehaviour { // public. public Text statusText; public Text comboText; // private. private int comboCount = 0; //------------------------------------------------------- // Public Function //------------------------------------------------------- public void SetStatusText(string status) { statusText.text = status; } public void ResetCombo() { comboCount = 0; UpdateComboText(); } public void AddCombo() { comboCount++; UpdateComboText(); } //------------------------------------------------------- // Private Function //------------------------------------------------------- private void UpdateComboText() { comboText.text = string.Format("{0}combo", comboCount); } }
■ゲームオブジェクトの作成
シーン内に空のゲームオブジェクトを作成し[UIManager]に名前を変更、作成した[UIManager.cs]をアタッチする
■表示処理
[GameManager.cs]の[SerializeField]に作成したUIManagerを登録して、ステータスの表示処理、コンボの初期化処理を記述します
[SerializeField] private UIManager uiManager; // ゲームのメインループ private void Update() { switch (currentState) { case GameState.Idle: Idle(); break; case GameState.PieceMove: PieceMove(); break; case GameState.MatchCheck: MatchCheck(); break; case GameState.DeletePiece: DeletePiece(); break; case GameState.FillPiece: FillPiece(); break; case GameState.Wait: break; default: break; } uiManager.SetStatusText(currentState.ToString()); } // プレイヤーの入力を検知し、ピースを選択状態にする private void Idle() { if (Input.GetMouseButtonDown(0)) { uiManager.ResetCombo(); SelectPiece(); } }
■コンボカウント
先ほどと同様に[Board.cs]にも[UIManager]の[SerializeField]を作成し、コンボのカウント処理を追加します。場所はピースを削除する場所です。
[SerializeField] private UIManager uiManager; // マッチングしているピースを削除する public IEnumerator DeleteMatchPiece(Action endCallBadk) { foreach (var piece in board) { if (piece != null && IsMatchPiece(piece)) { var pos = GetPieceBoardPos(piece); DestroyMatchPiece(pos, piece.GetKind()); uiManager.AddCombo(); yield return new WaitForSeconds(0.4f); } } endCallBadk(); }
■まとめ
ある程度パズルの部分はできたので、このシリーズは一旦ここで終了しようと思います。
コードは以下にまとめてあるので、よかったら御覧ください。
github.com
■関連リンク
Unityでパズドラ風3Matchパズルを作る_その1_ロジック編 - スマゲ
Unityでパズドラ風3Matchパズルを作る_その2_演出編1 - スマゲ
Unityでパズドラ風3Matchパズルを作る_その3_演出編2 - スマゲ
Unityでパズドラ風3Matchパズルを作る_その4_演出編3 - スマゲ
Unityでパズドラ風3Matchパズルを作る_その5_演出編4 - スマゲ