Unityでパズドラ風3Matchパズルを作る_その6_ステータス表示編
今回はコンボ表示を行いたいと思います。
■前回の内容
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 - スマゲ