チャットGPTとUntiy ブロック崩しの作り方

Unityでブロック崩しを作る基礎講座8:ゲームクリアのテキストを表示する

ども!カトサンラボのかとこうです。

この記事は、

ChatGPTとUnityでブロック崩しを作る基礎講座

の8番目の記事となります。

今回の記事では、

ゲームをクリアした時のテキストを表示する

という内容について
お伝えをしていきます。

一応ここまででブロック崩しを作る
基礎講座は完了となりますね。

この記事で行う作業は全部で7つです。

作業の流れ

1、ChatGPTでゲームクリアのテキストを表示する方法の確認をする

2、新しいUIのキャンバスを作る

3、ゲームクリアのテキストの作成と設定をする

4、GameClearTextを非表示に設定する

5、新しいスクリプトの作成

6、GameControllerスクリプトの修正

7、テストプレイをして確認する

以上のような内容となりますが、

ゲームオーバーのテキストの表示を作った時と
ほとんど同じ流れなので、復習にもなると思います。

それでは、1つ目の作業から解説をしていきますね。

スポンサーリンク

1、ChatGPTでゲームクリアのテキストを表示する方法の確認をする

まずはChatGPTでゲームクリアテキストを
表示する方法の確認をしていきましょう。

ChatGPTを開いて、チャット欄に

ゲームクリアの時にテキストも表示したい。標準のTextコンポーネントを使用してください

と入力をして送信します。

チャットGP Tでゲームクリアのときにテキストを表示する方法を確認する画像

そうするとChatGPTの返答が書かれていきます。

ChatGPTの返答

チャットGPTのゲームクリアテキストを表示する返答1
チャットGPTのゲームクリアテキストを表示する返答2
チャットGPTのゲームクリアテキストを表示する返答3
チャットGPTのゲームクリアテキストを表示する返答4

書かれた返答を見て、クリアテキストの
表示方法を作る流れについて確認をします。

2、新しいUIのキャンバスを作る

作業の流れを確認したら、
次はUnityで新しいUIのキャンバスを
作っていきましょう。

Hierarchy(ヒエラルキー)の
+ボタンをクリックして、
表示されたメニューから

「UI → Canvas(キャンバス)」

を選んでクリックします。

ヒエラルキーのメニューからCanvasを選んでクリックする画像

そうすると新しいキャンバスの
オブジェクトが作られますので、
名前を「GameClearCanvas」に変更しました。

Canvasの名前を「GameClearCanvas」変更した画像

これで新しいUIのキャンバスを作る作業は完了です。

3、ゲームクリアのテキストの作成と設定をする

次はキャンバスの中にUIのTextを
作成していきましょう。

ヒエラルキーの+ボタンをクリックして、
メニューを表示します。

そしてその中から、

 「UI → Legacy → Text 」

と選んでいってクリックで決定します。

ヒエラルキーのメニューからTextを選んだ画像

そうすると新しいTextオブジェクトが作られて、
名前が変更できるようになっています。

名前を「GameClearText」と入力をして決定。

これでテキストの作成は完了です。

Textの名前を「GameClearText」に変更した画像

次はテキストとして表示する文字について
設定をしていきます。

まずは文字の変更からですね。

ヒエラルキーでGameClearTextを
クリックして選択。

そしてInspector(インスペクター)の
Textコンポーネントを見ていきます。

GameClearTextのインスペクターを表示した画像

ここにTextという項目があるので、
この中に書かれている文字列を

「ゲームクリア」

に書き換えます。

これで、文字の変更はOKです。

Textの表示文字を「ゲームクリア」に変更した画像

そうしたら次は、文字の大きさを
変更していきましょう。

Textコンポーネントの
Font Size(フォントサイズ)の数値を
50に変更しました。

これで文字の大きさ変更は完了です。

TextのFont Sizeを50に変更した画像

大きさの次は、フォントスタイルを
変更しましょう。

テキストコンポーネントの
Font Style(フォントスタイル)を
クリックして、Boldを選んで決定します。

これで表示されるテキストが太字になりました。

TextのFont StyleをBoldにして太字にした画像

次は文字の位置を変更します。

Textコンポーネントのところに、
文字の位置を変更するボタンがあるので、
これをどちらも真ん中を選んでクリック。

これでO Kです。

アライメントの右にある2つのマークを両方とも真ん中をクリックした画像

そうしたら次は文字の色を変更します。

Textコンポーネントに
Color(カラー)という項目があります。

ここをクリックすることで
色を変えることができるんですね。

今回は白色にしました。

TextのColorの項目をクリックして色を変更する画面を出してテキストの色を白に変更した画像

そして、次は文字を表示する範囲の
調整をしていきましょう。

この表示範囲を調整しないと
文字を大きくしてもうまく表示が
されない状態になります。

Rect Transform(レクトトランスフォーム)の
Width(横幅)とHeight(縦幅)を
調整する部分があるので、

「横幅を500、縦幅を100」

に変更しました。

これで文字がちゃんと表示されるようになりました。

RectTransformのWidthとHeightの数値を変更した画像

あとは、テキストの位置を変更していきます。

Rect Transformのpos.xとPos.Yとpos.Zが
全て0になっていることを確認します。

そして文字が画面の真ん中に
表示するようになっていればOKです。

ゲーム画面におけるテキストの表示位置を中心にした画像

4、GameClearTextを非表示に設定する

Textオブジェクトと表示する文字の
設定が完了したら、テキストを非表示に
設定しましょう。

ヒエラルキーでGameClearTextを
クリックしてインスペクターを表示させます。

そしてインスペクターの名前が書いてある部分の
横にあるチェックボックスをクリックして、
チェックを外しましょう。

GameClearTextの名前の横にあるチェックボックスのチェックを外した画像

そうすることで、画面から表示が消えて、
ヒエラルキーのGameClearTextが
薄い文字色になりました。

ヒエラルキーに表示されているGameClearTextが薄い文字になった画像

これでゲームクリアテキストを
非表示にする作業は完了です。

5、ゲームクリアテキストを表示するプログラムを作成する

次は、ゲームクリアのテキストを表示する
プログラムを作りましょう。

新しいスクリプトを作りたいので、
プロジェクトウインドウの+ボタンを
クリックして、表示されたメニューから
スクリプトをクリック。

ProjectのメニューからC# Scriptwpクリックする画像

そうすると新しいスクリプトのファイルが
作られて、名前が変更できますので

「GameClearManager」

という名前を入力したら決定します。

新しく作られたC#スクリプトの名前を変更した画像

そして、スクリプトを作ることができたら、
ダブルクリックをして開きましょう。

コードエディタでGameClearManagerの内容が表示された画像

スクリプトが開いたら、ChatGPTの
画面を見ていきまして、
プログラムのコードをコピーします。

チャットGPTでコードをコピーした画像

その後、スクリプトの画面に戻りまして、
全てを選択します。

GameClearManagerの内容を全て選択した画像

そしてこちらにコピーしたコードを
貼り付けて上書きをしていきます。

GameClearManagerにコピーしてきたコードを貼り付けた画像

今回使用したGameClearManagerのコード

using UnityEngine;
using UnityEngine.UI;

public class GameClearManager : MonoBehaviour
{
    public Text gameClearText;

    void Start()
    {
        gameClearText.gameObject.SetActive(false);
    }

    public void TriggerGameClear()
    {
        gameClearText.gameObject.SetActive(true);
        Time.timeScale = 0f; // ゲームを停止する
    }
}

貼り付けられたら、メニューのファイルから
保存をクリックしてセーブしましょう。

そうしたらUnityに戻って、
ゲームクリアキャンバスに
プログラムのスクリプトをつけていきます。

まず、ヒエラルキーでゲームクリアキャンバスを
クリックしてインスペクターを表示させました。

GameClearCanvasのインスペクターを表示した画像

そしてプロジェクトウインドウにある
ゲームクリアテキストを表示する
スクリプトをクリックしたまま動かして、

インスペクターのアドコンポーネントの
あたりに持っていったらクリックを離します。

GameClearManagerをインスペクターへドラッグ&ドロップした画像

これで、ゲームクリアテキストを
表示させるためのスクリプトを
つけることができました。

GameClearManagerがインスペクターに付いた画像

その後、インスペクターについた
スクリプトの項目を見ていくと、

「ゲームクリアテキストを設定できる欄」

があるんですね。

Game Clear Textを設定する場所の画像

ということで、ヒエラルキーにある
ゲームクリアテキストをドラッグ&
ドロップしてここに設定します。

ヒエラルキーのGameClearTextオブジェクトをインスペクターのGame Clear Textに設定する画像
GameClearTextが設定された画像

これで、プログラムの作成と設定は完了です。

6、GameControllerスクリプトの修正

次はGameControllerスクリプトを
修正していきましょう。

プロジェクトウインドウにある
GameControllerスクリプトを
ダブルクリックして開きます。

GameControllerスクリプトの内容が表示された画像

内容が表示されたら、
ChatGPTからプログラムの
コードをコピーします。

チャットGPTで生成された修正コードをコピーした画像

そして、スクリプトに戻りまして、
コピーしてきたコードを貼り付けて
上書きをします。

GameCotrollerスクリプトにコピーしてきた修正コードを貼り付けた画像

今回使用したGameControllerの修正コード

using UnityEngine;

public class GameController : MonoBehaviour
{
    public int totalBlocks; // 総ブロック数
    private int blocksDestroyed; // 破壊されたブロック数
    private bool isGameClear; // ゲームクリアフラグ
    private GameClearManager gameClearManager; // 追加

    void Start()
    {
        // 総ブロック数を設定(ステージごとに調整する必要があります)
        totalBlocks = GameObject.FindGameObjectsWithTag("Block").Length;
        blocksDestroyed = 0;
        isGameClear = false;
        gameClearManager = FindObjectOfType<GameClearManager>(); // 追加
    }

    public void BlockDestroyed()
    {
        blocksDestroyed++;
        CheckGameClear();
    }

    void CheckGameClear()
    {
        // 破壊されたブロック数が総ブロック数に達したらゲームクリア
        if (blocksDestroyed >= totalBlocks && !isGameClear)
        {
            Debug.Log("Game Clear!");
            isGameClear = true;
            gameClearManager.TriggerGameClear(); // ゲームクリア処理を呼び出す
        }
    }
}

そうしたら、メニューのファイルから
保存を選んでクリックしてセーブしましょう。

これでGameControllerスクリプトの修正は完了です。

7、テストプレイをして確認する

ここまでできたら、あとはテストプレイをして
動作の確認をしていきましょう。

シーンビューの上にあるプレイボタンを
クリックしてテストプレイを開始します。

画像では全てのブロックが表示されていますが、
クリアしやすいように前回と同じように
ブロックを1つだけにすると確認しやすいです。

プレイボタンをクリックしてテストプレイを開始する画像

そしてテストプレイが始まったら、
ブロックを全て壊していきましょう。

ブロックを全て壊した時にゲームクリアの
テキストが表示されて、ゲームがストップ
したら確認はOKです。

ゲームクリアのプログラムの処理を確認できた画像

プレイボタンをクリックして、
テストプレイを終了します。

ブロックの表示を1つにしている場合には、
非表示にしたBlockプレハブのオブジェクトを
表示し直しておきましょう。

ということで、ゲームクリアテキストを
表示する作業は以上となります。

8、まとめ

この記事では、ブロック崩しで
ゲームをクリアした時に、

ゲームクリアのテキストを表示する方法

について解説をしてきました。

今回の内容はゲームオーバーのテキストを
表示する時の作業とほとんど同じだったので、
その時の復習になったかもしれませんね。

今回の作業で、

「ブロック崩しを作る基礎講座」

については完了となります。

ChatGPTを使うことで、ゲーム制作の
作業の効率化が図れたように思いますが
いかがでしたでしょうか。

僕としては、今回のプログラムのコードは
自分で手直しする必要がなかったので、
かなり楽だったように感じました。

ということで、基礎編については
完了となりますが、

ブロック崩しをパワーアップさせていく案として、

・リトライボタンを作る

・スコア表示をつける

・ブロックの耐久値の設定

・反射後のボール速度の加速と上限設定

・残機の設定

・アイテムの作成

などを考えているので、今後また
記事にしていくかもしれません。

その際にはまたチェックしていただけたら嬉しいです。

ということで、今回の記事は以上となります。

何か参考になりましたら幸いです。

スポンサーリンク

-チャットGPTとUntiy, ブロック崩しの作り方