top of page

Unityでタイマー処理と表示方法

タイマー処理と表示

Unityでゲームを作っていると、「一定時間をカウントする」「残り時間を表示する」といったタイマー処理はよく使います。例えば、制限時間付きゲームや、クールダウン機能などです。

今回は、タイマー処理の基本とUIへの表示方法をサンプルコード付きで解説します。


【目次】


1. タイマー処理の基本

Unityで時間を扱うには、Time.deltaTime を使うのが基本です。Time.deltaTime は、前のフレームから現在のフレームまでにかかった時間(秒)を表します。これを積み重ねることで経過時間を求められます。


2. 制限時間カウントダウンの例

以下は、制限時間をカウントダウンしてUI Textに表示するサンプルです。Unity 2021以降であれば、UIは Text (Legacy) または TextMeshPro が使えます。今回は簡単のために Text (Legacy) を使用します。

手順

  1. ヒエラルキーで UI → Text を作成し、「TimerText」に名前を変更。

  2. Canvas内に作成されたTextオブジェクトを画面上に見やすく配置。

  3. 以下のスクリプトを作成して空のGameObjectにアタッチ。

  4. timerText に Textオブジェクトをドラッグ&ドロップで割り当て。


3. サンプルコード


using UnityEngine;
using UnityEngine.UI;

public class TimerController : MonoBehaviour
{
    public float startTime = 60f; // 制限時間(秒)
    private float currentTime;    // 現在の残り時間
    public Text timerText;        // UI Text参照用

    void Start()
    {
        // ゲーム開始時に制限時間を設定
        currentTime = startTime;
    }

    void Update()
    {
        // 時間を減らす
        currentTime -= Time.deltaTime;
        
        // 0秒未満にならないようにClamp
        if (currentTime < 0)
        {
            currentTime = 0;
            // タイムアップ時の処理(必要に応じてコードを追加)
            Debug.Log("Time Up!");
     }

        // 残り時間を秒単位でUIに表示
        timerText.text = "残り時間: " + Mathf.Ceil(currentTime).ToString() + " 秒";
    }
}

4. コードのポイント解説

  • startTimeゲーム開始時の制限時間を秒で設定します。

  • Time.deltaTime毎フレームごとの経過時間を減算することで、なめらかな時間経過が実現します。

  • Mathf.Ceil少数を切り上げて表示。59.4 秒なら「60 秒」と表示されます。

  • タイムアップ判定currentTime < 0 になった時点で止めることで、マイナス時間の表示を防ぎます。


5. タイマーをカウントアップにする方法

もし経過時間を表示したい場合は、以下のように変更できます。


currentTime += Time.deltaTime; timerText.text = "経過時間: " + currentTime.ToString("F2") + " 秒";


まとめ

  • Unityで時間を扱う場合は Time.deltaTime を使う。

  • 制限時間や経過時間は簡単に実装できる。

  • 表示にはTextやTextMeshProを活用する。

  • タイムアップ時の処理(ゲーム終了、リトライ表示など)を追加すれば実用的になる。

今回のサンプルを応用すれば、制限時間付きのゲームスキルのクールダウン表示など、幅広く活用できます。

 
 

最新記事

すべて表示
個人開発ゲーム制作者の「あるある」20連発

こんにちは、アマギラスです。個人でゲーム開発をしているとふとしたタイミングでアイデアが思い浮かんだり、途端にやる気がなくなったり、嫌気がさしたり…色々ありますよね? そんなあるあるを20個ほどご用意しました。個人開発ゲーム制作者の「あるある」20連発少しでも共感していただけ...

 
 
bottom of page