6日目 - Unity④

時間

ゲームで時間を使いたいときはたくさんあります。

など

Unityでカウントするとなると一番に思いつくのはUpdate()で変数に+1し続けることだと思いますが、Update()は環境によってその実行間隔が変わるうえ、処理負荷によっても大きく変動します。

そこでUnityではUpdate()の実行間隔を取得する関数Time.deltaTimeを利用して時間を計測します。

GameManagerスクリプトに以下のコードを書きましょう

		//経過時間を求めるコード
		float time; //経過時間time
		
		void Start()
    {
		    time = 0; //ゲーム開始時にtimeを0で初期化
    }
    
    void Update()
    {
        time += Time.deltaTime; //前のUpdate()実行タイミングからの経過時間を足して累計時間を計算
        
        if(Keyboard.current.tKey.wasPressedThisFrame)
				{
						Debug.Log(time); //Tキーが押されたら現在の経過時間を表示
				}
    }

Tキーを押すと現在の経過時間を表示できます。

また、ゲーム開始時からの経過時間を取得する関数Time.timeもあります。

		//タイマーの実装
		float time, countStartTime;
		
		void Update()
    {
        if(Keyboard.current.tKey.wasPressedThisFrame)
				{
		        countStartTime = Time.time; //Tキーが押されたら現在の時間を記憶
				}
				
				if(Keyboard.current.tKey.wasPressedThisFrame)
				{
						time = Time.time - countStartTime; //Tキーが押されたら計測を開始した時間と現在の時間の差を計算
						Debug.Log(time); //計測時間を表示
		
    }