Unityで「経過した時間の表示」と「現在時刻」を表示していきます。
はじめに
Unityのバージョンは「2021.3.14f1」で作成しています。
ゲーム開始から「経過時間の表示」と「現在時刻の表示」をしてみます。
実装開始
まずは簡単なUIを作成します。「UI」→「Legacy」→「Text」を追加します。
表示位置や文字サイズなどは好きな感じでOKです。上の方に表示することが多いと思います。
スクリプトの作成
下記スクリプトを作成します。
using UnityEngine; using UnityEngine.UI; public class Timer : MonoBehaviour { [SerializeField] private Text timerText; private int minutes, seconds; private void Update() { timerText.text = TimeFormat(Time.time); } private string TimeFormat(float time) { minutes = (int)time / 60; seconds = (int)time % 60; return string.Format("{0:00}:{1:00}", minutes, seconds); } }
「Time.time」にはゲーム開始からの秒数が入っているので、分数と秒数に分けます(例えば、200と返ってきた場合は、3分20秒となるようにしています)。分けた後は0埋めで整えて画面上に表示しています。
カメラにスクリプトを追加して、パラメータをセットします。
実行すると下記のような感じで「ゲーム開始からの経過時間」が表示されます。
現在時刻の表示
C#では、現在時刻を「DateTime.Now」で取得することができます。ただし、そのままだと年月日も入っているので時間だけにします。
using System; using UnityEngine; using UnityEngine.UI; public class Timer : MonoBehaviour { [SerializeField] private Text timerText; private void Update() { timerText.text = DateTime.Now.ToLongTimeString(); } }
下記でも同じように「時分秒」だけになります。
timerText.text= DateTime.Now.ToString("hh:mm:ss");
UnityというよりはC#ですね。
実行すると下記のような感じに現在時刻が表示されます。