マナビヤ

人生が豊かになるブログ

manabiya

ゲーム画面に制限時間を表示する方法【知識ゼロから始めるUnity入門⑧】

f:id:fab5:20200115182807j:plain

  • ゲーム画面に制限時間を表示させる処理
  • 制限時間を超えると画面が切り替わる処理

 

この記事では上記のような処理について説明しています。

 

こんにちは fab5 です♪

前回はHPが無くなったらゲームオーバーにする方法について説明しました。

前回の記事はこちら↓

manabiya.fab5.work

 

そして今回はゲーム画面に制限時間を表示する方法、また制限時間になると画面が切り替わる方法について説明します。

 

 

ゲーム画面に制限時間を表示する方法

ゲーム画面に制限時間を表示するために、まずはどのような流れに沿って進めていけばいいのか解説していきます。

 

処理の流れ

  • ゲーム画面に時間を表示するためのテキストオブジェクトを作成する。
  • 空のオブジェクトを作成する。
  • 時間を管理するスクリプトを作成する。
  • 空のオブジェクトにスクリプトをアタッチして時間管理オブジェクトを作成する。

 

ゲーム画面に時間を表示するためのテキストオブジェクトを作成する

まずは、ゲーム画面に時間を表示するためのテキストオブジェクトを作成します。

 

f:id:fab5:20200204205620j:plain

 

ヒエラルキー欄から、「Create」→「UI」→「text」と進んでいき、textオブジェクトを作成してください。

 

f:id:fab5:20200204205745j:plain

 

このようにオブジェクトが作られるので好きな名前に変えて結構です。

僕は今回そのままTextでいきました。

 

f:id:fab5:20200204205832j:plain

 

次に制限時間の位置を固定するため、アンカーポイントを設定します。

上の真ん中に表示したいので上記の位置にしましょう。

アンカーポイントについて知らない方はこちらもご覧下さい↓

manabiya.fab5.work

 

f:id:fab5:20200204205856j:plain

 

アンカーポイントを設定したら位置やフォントサイズを調整しましょう。

上の図の赤丸の数値を変更すると位置や文字サイズが変化するのが分かるので色々触ってみてください。

 

空のオブジェクトを作成する

次に時間管理をするオブジェクトを作成するための「空のオブジェクト」を作っておきます。

 

f:id:fab5:20200204205918j:plain

 

これまでも幾度か説明しましたが、ヒエラルキー欄より「Create」→「CreateEmpty」と進んで空のオブジェクトを作成してください。

 

f:id:fab5:20200204205941j:plain

 

f:id:fab5:20200204210002j:plain

 

空のオブジェクトの名前は「TimeCounter」に変更しました。

これにスクリプトをアタッチするわけですね。

 

時間を管理するスクリプトを作成する

それでは本日のキモになる部分、スクリプトについて説明します。

まずはスクリプトを書く前の準備からいきますね。

 

f:id:fab5:20200204210023j:plain

 

プロジェクト欄から「右クリック」→「Create」→「C#Script」と進んでC♯のスクリプトを作成します。

 

f:id:fab5:20200204210046j:plain

 

スクリプト名は「TimeCounter」に変更しました。

 

f:id:fab5:20200204210105p:plain

 

TimeCounterに書き込むプログラムはこのようになります。

いきなりだと分かりにくいと思うので細かく説明していきますね。

 

f:id:fab5:20200204210131j:plain

 

まず、このプログラムはTextというUIオブジェクトを取り扱うので赤枠のUIの一文を追加、また制限時間が来ると画面を切り替える処理を行うのでSceneManagementの一文も書き加えてください。

 

f:id:fab5:20200204210147p:plain

 

次はこの部分を説明します。

一行ずつ、プログラムの下に説明を入れていきます。

GameObject Text;

(オブジェクト変数のTextを宣言)

float time = 30.0f;

(timeという変数に30秒を代入する)

this.Text = GameObject.Find("Text");

(Text変数に先程作成したTextオブジェクトを代入す)

 

f:id:fab5:20200204210207p:plain

 

次に時間が減っていく処理、画面を切り替える処理の部分を説明します。

this.time -= Time.deltaTime;

(time(30秒)から1秒ずつ時間を減らす)

if ( this.time < 0 )

(もし、timeが0を下回った場合)

this.Text.GetComponent<Text>().text = "終了”;

(Textオブジェクトの文字部分に「終了」と表示をする。)

SceneManager.LoadScene("GameOver");

(GAME OVER画面に移動する)

else

(それ以外の場合は)

this.Text.GetComponent<Text>().text = this.time.ToString("F1");

(Textオブジェクトの文字部分にその時の時間を小数点第一位まで表示する)

 

空のオブジェクトにスクリプトをアタッチして時間管理オブジェクトを作成する

スクリプトを作成し終えたら、予め作っておいた空のオブジェクトにスクリプトをアタッチします。

 

f:id:fab5:20200204210259j:plain

 

プロジェクト欄のTimeCounterスクリプトをドラッグして、ヒエラルキー欄のTimeCounterオブジェクトにドロップしてください。

 

これで、全ての手順を終わりました。

 

ゲームを実行する

それでは「▶」ボタンを押してゲームを実行してみましょう。

 

f:id:fab5:20200204210320j:plain

 

このように真ん中の上部分に小数点第一位までの制限時間が表示されましたね。

以上で今回の説明を終わります。

 

まとめ

今回はゲーム画面に制限時間を表示する方法について説明しました。

これは色々なゲームで使う可能性があるのでぜひとも覚えておきたい処理になります。

次回は、得点を得るためのアイテムとスコアを表示するための処理について説明します。

それでは最後までありがとうございました´ω`)ノ

 

完成するゲームはこちら

オヤジGET!! | フリーゲーム投稿サイト unityroom

関連書籍

Unityの教科書 Unity2019完全対応版  2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

  • 作者:北村 愛実
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/06/28
  • メディア: 単行本