前回でテトリスの基本動作の処理を作成しました。
しかし、ゲームにはインゲーム部分だけではなくアウトゲーム部分もあるので、
アウトゲーム部分も作成していきます。
具体的には、メニュー画面や一時停止画面のスコアの表示などです。
それでは、今回はスコアの表示をしていきます。
インゲーム・・・実際にプレイするゲームのメインの部分のこと
アウトゲーム・・・メイン機能以外のゲーム機能画面(メニュー画面など)のこと
スコアを表示させる
まずは、下の画像1を参考にスコアを表示させていきましょう。

Textを表示させたら、
下記の画像2を参考にフォントのサイズと色を変更してスコアTextを左上に表示させましょう。
フォントのサイズと色はいい感じに変更してください。

GameManagementスクリプトを作成
下記の画像3を参考にGameManagementスクリプトの作成とGameManagementオブジェクトを作成します。

スコアをスコアテキストへ反映させる
現時点でスコアテキストは”SCORE: 00″と表示されていますが、もちろんですがゲームを開始しても変更されません。
GameManagementスクリプトにコード書いて、変更できるようにしましょう。
今回は、minoが1行そろったらスコアを+100するという処理を追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManagement : MonoBehaviour
{
// スコア関連
public Text scoreText;
private int score;
// Start is called before the first frame update
void Start()
{
Initialize();
}
// Update is called once per frame
void Update()
{
}
// ゲーム開始前の状態に戻す
private void Initialize()
{
// スコアを0に戻す
score = 0;
}
// スコアの追加
public void AddScore()
{
score += 100;
scoreText.text = "Score: " + score.ToString();
Debug.Log("Add 100");
}
}これだけでは、いつスコアを追加するのかプログラムは認識してないので、Minoスクリプトにもコードを追加します。
public class Mino : MonoBehaviour
{
// 列がそろっているか確認
bool HasLine(int i)
{
for (int j = 0; j < width; j++)
{
if (grid[j, i] == null)
return false;
//Debug.Log(j);
}
// 今回の追加
FindObjectOfType<GameManagement>().AddScore();
return true;
}
}Minoスクリプトがわからないという方は、前回のUnityテトリスの作り方-8を確認してください。
→Unityテトリスの作り方-8
最後に下記の画像4のようにScoreTextをGameManagementスクリプトにアタッチします。

そして、ゲームを開始するとスコアが自動で変更するようになっていると思います。
Unity学習者おすすめの本
この本はUnity学習者におすすめです。
内容がとても良くてイラストで重要なポイントは解説されているので、理解しやすいです。
操作する内容は画像付きなので、同じ操作しても同じ動作にならないというようなことはないように工夫されています。
一冊勉強するだけで、大量の知識をインプットできるので、テトリス作成と同時進行で試してみてください。
今回のまとめ
今回はスコアテキストを追加して、1列minoが1列そろうとスコアが100上がるという処理を追加しました。
次回は、スコアが1500まで上がるとゲームをクリアするという処理を追加します。
最後まで読んでいただきありがとうございました。
⭐️あわせて読もう!
→Unityテトリスの作り方-10


コメント