[Unity] 制限時間を設定する

どうも、tatsuです!

今回はUnityで制限時間を設定する方法について説明しようと思います。

制限時間をつける

この記事では、シーン上に残り時間を表示するテキストを配置します。
そして、それが0になったらゲーム終了のテキストに変更するというのをやってみたいと思います。

UIオブジェクトのTextを配置する

ヒエラルキーから[Create]→[UI]→[Text]を選択します。

すると[Canvas]の下に[Text]というオブジェクトが生成されました。
わかり易く[LimitTimeUI]にリネームしておきましょう。
また、[Canvas]の中央に配置し、テキストの大きさも70くらいにしてください。

注意
[Canvas]や[Main Camera]をそれぞれダブルクリックしていると、[Canvas]の大きさに驚くかもしれません。
具体的には以下のような関係になっていると思います。

これはゲーム画面とUI設定画面をわかり易く分けてくれていると思えばいいかと思います。
大きさは違いますが、実際にCanvasの中央にTextを配置すればゲーム実行した際に画面中央にTextが表示されますのでご安心を。

制限時間を計算し、LimitTimeUIのテキストを書き換える

さてテキストの配置は完了したので、次はそのテキストに制限時間を表示していきます。
Assetsで新しくC#Scriptを作成してください。名前は[timeScript]とします。
作成できたら、中身を以下のようにします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class timeScript : MonoBehaviour {
	GameObject limitTimeUI;
	float time = 10.0f;

	// Use this for initialization
	void Start () {
		this.limitTimeUI = GameObject.Find("LimitTimeUI");
	}
	
	void Update(){
		// 毎フレーム毎に残り時間を減らしていく
		this.time -= Time.deltaTime;
		if(this.time < 0){
			this.limitTimeUI.GetComponent<Text>().text = "終了";
		}else{
			// timeを文字列に変換したものをテキストに表示する
			// ToStringのF1とは、小数点以下1桁までという意味
			this.limitTimeUI.GetComponent<Text>().text = this.time.ToString("F1");
		}
	}
}
注意
スクリプト4行目の以下の記述を忘れないでください。

using UnityEngine.UI;

空のオブジェクトにtimeScriptをアタッチする

ここまでできたら、あとはtimeScriptを空のオブジェクトにアタッチします。
スクリプトはオブジェクトにアタッチしないと使用できないため、何もない空のオブジェクトを使用しています。
 
ヒエラルキーから[Create Empty]を選択し、それにtimeScriptをアタッチしてください。

これで準備完了です!

実行

準備完了したので、シーンを保存してゲーム実行してみてください。
このように時間が減っていって・・・

こうなりましたか?

まとめ

いかがでしたか?
今回は制限時間の設定方法を説明しました。
ゲーム内で使用するときは、終了時にゲームオーバー画面へ遷移させるといった風にするとゲームらしくなるのではないでしょうか。
それでは!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です