Unityでタイマー処理と表示方法
- Amagirasu
- 8月9日
- 読了時間: 3分

Unityでゲームを作っていると、「一定時間をカウントする」「残り時間を表示する」といったタイマー処理はよく使います。例えば、制限時間付きゲームや、クールダウン機能などです。
今回は、タイマー処理の基本とUIへの表示方法をサンプルコード付きで解説します。
【目次】
1. タイマー処理の基本
Unityで時間を扱うには、Time.deltaTime を使うのが基本です。Time.deltaTime は、前のフレームから現在のフレームまでにかかった時間(秒)を表します。これを積み重ねることで経過時間を求められます。
2. 制限時間カウントダウンの例
以下は、制限時間をカウントダウンしてUI Textに表示するサンプルです。Unity 2021以降であれば、UIは Text (Legacy) または TextMeshPro が使えます。今回は簡単のために Text (Legacy) を使用します。
手順
ヒエラルキーで UI → Text を作成し、「TimerText」に名前を変更。
Canvas内に作成されたTextオブジェクトを画面上に見やすく配置。
以下のスクリプトを作成して空のGameObjectにアタッチ。
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を活用する。
タイムアップ時の処理(ゲーム終了、リトライ表示など)を追加すれば実用的になる。
今回のサンプルを応用すれば、制限時間付きのゲームやスキルのクールダウン表示など、幅広く活用できます。