做一个时间的显示,unity有获取到系统时间的api DateTime
当时考虑到网络游戏几个人的时间还是统一比较好,因此做了一个获取网络时间
上代码
先做定义,链接地址是腾讯官网的地址,内容只有一个text文本时间,可以点进去看一下就明白了
http://cgi.im.qq.com/cgi-bin/cgi_svrtime
public string timeURL = "http://cgi.im.qq.com/cgi-bin/cgi_svrtime";
public int year, mouth, day, hour, min, sec;
void Start ()
{
StartCoroutine(GetTime());
}
IEnumerator GetTime()
{
WWW www = new WWW(timeURL);
while (!www.isDone)
{
//防止加载失败
yield return www;
}
SplitTime(www.text);
//www.text已经获取到时间的文本了,如果想做年月日的判断和处理可以继续下面的方法
}
void SplitTime(string dateTime)
{
//分个 替换 处理
dateTime = dateTime.Replace("-", "|");
dateTime = dateTime.Replace(" ", "|");
dateTime = dateTime.Replace(":", "|");
string[] Times = dateTime.Split('|');
year = int.Parse(Times[0]);
mouth = int.Parse(Times[1]);
day = int.Parse(Times[2]);
hour = int.Parse(Times[3]);
min = int.Parse(Times[4]);
sec = int.Parse(Times[5]);
}
Unity 中我们要获取时间,只需要使用 System 命名空间下的 DateTime 类即可完成
Debug.Log(System.DateTime.Now); // 当前本地时间 (年月日时分秒) – 10/4/2018 9:38:19 PM
Debug.Log(System.DateTime.UtcNow); // 当前世界时间 (年月日时分秒) – 10/4/2018 1:38:19 PM
Debug.Log(System.DateTime.Now.Year); // 当前时间 (年)
Debug.Log(System.DateTime.Now.Month); // 当前时间 (月)
Debug.Log(System.DateTime.Now.Day); // 当前时间 (日)
Debug.Log(System.DateTime.Now.Hour); // 当前时间 (时)
Debug.Log(System.DateTime.Now.Minute); // 当前时间 (分)
void Start()
{
DateTime date1 = new DateTime(); // 1/1/0001 12:00:00 AM —— 默认构造函数
DateTime date2 = new DateTime(2008, 6, 6, 6, 6, 6); // 6/6/2008 6:06:06 AM —— 初始化 年、月、日、时、分、秒
print(date2.ToString(“yyyyMMddHH:mm:ss”)); // 2008060606:06:06
print(date2.ToString(“yyyy-MM-dd★HH→mm☆ss”)); // 2008-06-06★06→06☆06 —— DateTime.ToString(String)使用自定义方式格式化日期字符串
DateTime date3 = DateTime.Now; // 10/4/2018 12:43:41 AM —— 当前 本地时间
DateTime date4 = DateTime.UtcNow; // 10/3/2018 4:43:41 PM —— 当前 协调世界时间
DateTime date5 = DateTime.Today; // 10/4/2018 12:00:00 AM —— 今天
}
因为是unity原生的api,所以有很多详细的功能和方法,详细的功能可以参考unity官方的api,
两种方法,一种是获取到系统的时间,另外一种是获取到网络时间,根据实际需求用就行了