Unityでは、端末(PCやスマホなど)から現在の時刻を取得することができます。
まるとこ
ゲーム内で時計を表示したり、放置ゲーム、育成ゲームなどに使えるかと思います。
今回は時刻取得の方法を簡単にご紹介します。
目次
現在時刻を取得する方法(DateTime.Now)
C#のDateTime構造体というものを使用します。名前は難しそうですが、簡単に使うことができます。
C#の機能を使うので、using System; を忘れずに書きます。
実行した時の時刻を文字列で取得するサンプルコードは以下になります。
using UnityEngine;
using System;
public class DateTimeSample : MonoBehaviour
{
DateTime dt = DateTime.Now;
void Start()
{
Debug.Log("現在の時刻は" + dt.ToString());
}
}
実行結果は次のようになります(2024年11月4日19時48分16秒に実行しました)。
このように、月/日/年 時:分:秒 PM or AM のように出力されます。
各要素を取り出す
秒だけ、時間だけなど、個別で取り出すこともできます。要素はそれぞれint型の変数に代入できます。
using UnityEngine;
public class DateTimeSample : MonoBehaviour
{
int year = System.DateTime.Now.Year; //年
int month = System.DateTime.Now.Month; //月
int day = System.DateTime.Now.Day; //日
int hour = System.DateTime.Now.Hour; //時
int minute = System.DateTime.Now.Minute; //分
int second = System.DateTime.Now.Second; //秒
int millisecond = System.DateTime.Now.Millisecond; //ミリ秒
void Start()
{
Debug.Log("現在は"
+ year + "年"
+ month + "月"
+ day + "日"
+ hour + "時"
+ minute + "分"
+ second + "秒"
+ millisecond + "ミリ秒");
}
}
実行結果は次のようになります。時間は個別で取り出すと、20時のように24時間表記で表示されます。
フォーマットを指定して文字列に変換する
ToStringメソッドの引数にフォーマットを指定することで、DateTimeの日時をフォーマットを指定して文字列に変換できます。
年、月、日は yyyy/MM/dd
時(24時間表記)、分、秒は HH:mm:ss
時(12時間表記)、分、秒は hh:mm:ss
のように指定します。
Unityで確認するとこのようになります。
using UnityEngine;
using System;
public class DateTimeSample : MonoBehaviour
{
DateTime dt = DateTime.Now;
String formattedDate_24; //24時間表記の日時
String formattedDate_12; //12時間表記の日時
void Start()
{
formattedDate_24 = dt.ToString("yyyy/MM/dd HH/mm/ss");
formattedDate_12 = dt.ToString("yyyy/MM/dd hh/mm/ss");
Debug.Log("24時間表記の日時" + formattedDate_24);
Debug.Log("12時間表記の日時" + formattedDate_12);
}
}
実行結果は次のようになります。
終わりに
Unityで時刻を取得する方法を簡単にご紹介しました。
もっと詳しく知りたい方は、UnityというよりC#の分野なので「C# DateTime」のキーワードで検索すると良いかと思います。
それではまた!