无后端高效获取网络时间的组件
废话不多说,直接上源码
直接新建一个脚本 NTPComponent.cs
将脚本Copy到你的项目,拖入场景节点上
获取UTC时间 NTPComponent.m_NowUtc
using UnityEngine;
using System;
using System.Collections;
using UnityEngine.Networking;
using Newtonsoft.Json;
using System.Globalization;
namespace GameContent
{
/// <summary>
/// 启动游戏后,将所有地址列表遍历
/// </summary>
[DisallowMultipleComponent]
public class NTPComponent : MonoBehaviour
{
/// <summary>
/// 网络时间是否生效中
/// </summary>
public static bool m_IsValid {
get; private set; } = true;
/// <summary>
/// 当前Utc时间
/// </summary>
public static DateTime m_NowUtc
{
get
{
return m_NowUtcServerDate.AddSeconds( ( int ) ( Time.unscaledTime - m_ServerTimePoint ) );
}
private set
{
m_NowUtcServerDate = value;
}
}
/// <summary>
/// 当前服务器时间
/// </summary>
public static DateTime m_NowSerivceTime
{
get
{
return m_NowUtc.AddHours( GlobalConfig.TIME_ZONE_OFFSET );
}
}
/// <summary>
/// 服务器标记时间对象
/// </summary>
private static DateTime m_NowUtcServerDate;
/// <summary>
/// 拉取服务器的标记时间尺
/// </summary>
private static float m_ServerTimePoint = 0f;
/// <summary>
/// 是否已经成功拉取到服务器时间
/// </summary>
private bool m_Inited = false;
private void Awake( )
{
m_NowUtc = DateTime.UtcNow;
m_ServerTimePoint = Time.unscaledTime;
DontDestroyOnLoad( gameObject );
}
private void Start( )
{
#if !