当前位置: 首页 > news >正文

重庆网站备案系统b2b网站有哪些

重庆网站备案系统,b2b网站有哪些,古建设工程造价管理协会网站,经营类网页游戏大全无后端高效获取网络时间的组件 废话不多说,直接上源码m_NowSerivceTime 一个基于你发行游戏地区的时间偏移, 比如北京时区就是 8, 巴西就是-3,美国就是-5using Newtonsoft.Json; 如果这里报错, 就说明项目没有 NewtonsoftJson插件…

无后端高效获取网络时间的组件

  • 废话不多说,直接上源码
  • m_NowSerivceTime 一个基于你发行游戏地区的时间偏移, 比如北京时区就是 8, 巴西就是-3,美国就是-5
  • using Newtonsoft.Json; 如果这里报错, 就说明项目没有 NewtonsoftJson插件, 没关系,这里你改成Unity内置的就行
  • 总之就一句, 没有必要就直接使用NTPComponent.m_NowUtc, 有时区要求就用 NTPComponent.m_NowSerivceTime, 总之,优势在我!
  • 原理, 这块没必要看,如果有同学有兴趣,可以继续看看

废话不多说,直接上源码

直接新建一个脚本 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 !SANDBOX_MODEStartCoroutine( GetNetTimeFromWorldTimeApi() );StartCoroutine( GetNetTimeFromTimeIOApi() );StartCoroutine( GetNetTimeFromGoogleApi() );#elseLog.Green( $"当前是沙盒环境,你可以更改时间 {DateTime.Now}" );
#endif}#region WebApiIEnumerator GetApi( string api, Action<string> callback ){using ( var request = UnityWebRequest.Get( "https://worldtimeapi.org/api/timezone/Etc/UTC" ) ){yield return request.SendWebRequest();try{if ( request.result == UnityWebRequest.Result.Success ){callback( request.downloadHandler.text );}//else//{//    Debug.LogError( $"Failed to fetch server time: {request.error}" );//}}catch ( Exception e ){//不处理}}}struct WorldTimeData{public string datetime;public string timezone;public string utc_offset;}struct TimeIOData{public int year;public int month;public int day;public int hour;public int minute;public int seconds;public string dateTime;public string timeZone;public string dayOfWeek;public bool dstActive;}IEnumerator GetNetTimeFromWorldTimeApi( ){string result = string.Empty;yield return GetApi( "https://worldtimeapi.org/api/timezone/Etc/UTC", _ => result = _ );if ( !string.IsNullOrEmpty( result ) ){var data = JsonConvert.DeserializeObject<WorldTimeData>( result );Debug.Log( $"World Time: {data.datetime}" );if ( TryParseUTCString( data.datetime, out var utcNow ) && utcNow != DateTime.MinValue ){OnPullServerTimeOK( utcNow );}}}IEnumerator GetNetTimeFromTimeIOApi( ){string result = string.Empty;yield return GetApi( "https://timeapi.io/api/Time/current/zone?timeZone=UTC", _ => result = _ );if ( !string.IsNullOrEmpty( result ) ){var data = JsonConvert.DeserializeObject<TimeIOData>( result );Debug.Log( $"Time IO API: {data.dateTime}" );if ( TryParseUTCString( data.dateTime, out var utcNow ) && utcNow != DateTime.MinValue ){OnPullServerTimeOK( utcNow );}}}IEnumerator GetNetTimeFromGoogleApi( ){using ( var request = UnityWebRequest.Get( "https://www.google.com" ) ){yield return request.SendWebRequest();try{if ( request.result == UnityWebRequest.Result.Success ){if ( request.GetResponseHeader( "Date" ) != null ){string serverDate = request.GetResponseHeader( "Date" );Debug.Log( $"Google Server Time: {serverDate}" );var utcDate = ParseServerDateToUTC( serverDate );if ( utcDate != DateTime.MinValue ){OnPullServerTimeOK( utcDate );}}}}catch ( Exception e ){//不处理}}}#endregion#region Common/// <summary>/// Parses a UTC time string into a DateTime object./// </summary>/// <param name="utcString">The UTC time string.</param>/// <returns>A DateTime object in UTC, or DateTime.MinValue if parsing fails.</returns>public static bool TryParseUTCString( string utcString, out DateTime utcNow ){try{// Attempt to parse the string with DateTime.ParseDateTime parsedDate = DateTime.Parse( utcString, null, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal );utcNow = parsedDate;return true;}catch ( FormatException ){Debug.Log( "Failed to parse UTC time string." );utcNow = DateTime.MinValue;return false;}}/// <summary>/// Parses a server date string (from HTTP header) into a UTC DateTime object./// </summary>/// <param name="serverDate">The server date string in RFC1123 format.</param>/// <returns>A DateTime object in UTC.</returns>public static DateTime ParseServerDateToUTC( string serverDate ){try{// Use DateTime.ParseExact to parse RFC1123 formatDateTime parsedDate = DateTime.ParseExact(serverDate,"r", // "r" or "R" stands for RFC1123 patternCultureInfo.InvariantCulture,DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);return parsedDate;}catch ( FormatException ex ){Debug.Log( $"Error parsing server date: {ex.Message}" );return DateTime.MinValue; // Return MinValue to indicate failure}}/// <summary>/// 当服务器拉取到时间后调用, 锁定一次/// </summary>/// <param name="utcTime"></param>private void OnPullServerTimeOK( DateTime utcTime ){if ( m_Inited ) return;m_Inited = true;StopAllCoroutines();m_ServerTimePoint = Time.unscaledTime;m_NowUtc = utcTime;Log.Green( $"获取服务器时间成功: {utcTime}" );}#endregion}
}

m_NowSerivceTime 一个基于你发行游戏地区的时间偏移, 比如北京时区就是 8, 巴西就是-3,美国就是-5

具体根项目运营确认

//这个就是一个全局的定义,自己写一个类或者 写死一个也行
GlobalConfig.TIME_ZONE_OFFSET = 8;

using Newtonsoft.Json; 如果这里报错, 就说明项目没有 NewtonsoftJson插件, 没关系,这里你改成Unity内置的就行

改成 JsonUtility.FromJson( result ); //Unity 内置的Json库
在这里插入图片描述

总之就一句, 没有必要就直接使用NTPComponent.m_NowUtc, 有时区要求就用 NTPComponent.m_NowSerivceTime, 总之,优势在我!

在这里插入图片描述

原理, 这块没必要看,如果有同学有兴趣,可以继续看看

真实时间由两个部分组成, 一个是请求一次得到的 真实云UTC时间, 另外一个是当前游戏的秒数TimePoint
通过 基数 + 秒数偏移。 能在游戏内断网的时候有效获取到真实的云时间
需要注意的是,在游戏启动的时候,你得确保用户是联网的
当然,如果你的游戏是纯单机的,也不会报错,因为在Awake的时候默认用的是本地的TimePoint,如果你用纯单机也就不需要考虑真实的时间, 这里是能保证你的项目能在任何条件下安全的跑起来

在游戏启动的时候获取一个 UTC时间 基数
然后记录当前的游戏运行时间 Time.unscaledTime
获取当前真实的UTC时间时 => UTC时间 基数 + ( 当前游戏运行时间 - 记录时间 ) 秒数偏移

在这里插入图片描述


文章转载自:
http://dinncorumbling.wbqt.cn
http://dinncowashout.wbqt.cn
http://dinncoestrin.wbqt.cn
http://dinncoerythropsin.wbqt.cn
http://dinncopucklike.wbqt.cn
http://dinncoropery.wbqt.cn
http://dinncoobscurantist.wbqt.cn
http://dinncotimetable.wbqt.cn
http://dinncogouache.wbqt.cn
http://dinncolubavitcher.wbqt.cn
http://dinncolophobranch.wbqt.cn
http://dinncomiracidium.wbqt.cn
http://dinncocuneate.wbqt.cn
http://dinncoconglutination.wbqt.cn
http://dinncogrope.wbqt.cn
http://dinncocarriage.wbqt.cn
http://dinncoridership.wbqt.cn
http://dinncotermini.wbqt.cn
http://dinncoeuropeanly.wbqt.cn
http://dinncopaladin.wbqt.cn
http://dinncoapatite.wbqt.cn
http://dinncocrossfire.wbqt.cn
http://dinncophototimer.wbqt.cn
http://dinncounseen.wbqt.cn
http://dinncohelp.wbqt.cn
http://dinncovanaspati.wbqt.cn
http://dinncoungenerous.wbqt.cn
http://dinncorestless.wbqt.cn
http://dinncobioplasma.wbqt.cn
http://dinncopesterous.wbqt.cn
http://dinncobarsac.wbqt.cn
http://dinncoectromelia.wbqt.cn
http://dinncojacksonian.wbqt.cn
http://dinncofamine.wbqt.cn
http://dinncopage.wbqt.cn
http://dinncooutturn.wbqt.cn
http://dinncozincous.wbqt.cn
http://dinncosoberly.wbqt.cn
http://dinncophotoelectric.wbqt.cn
http://dinncosinapine.wbqt.cn
http://dinncodecidophobia.wbqt.cn
http://dinncowonsan.wbqt.cn
http://dinncoadrenochrome.wbqt.cn
http://dinncodysarthria.wbqt.cn
http://dinncocinerator.wbqt.cn
http://dinncoestranged.wbqt.cn
http://dinncomilfoil.wbqt.cn
http://dinncoparge.wbqt.cn
http://dinncotrifluralin.wbqt.cn
http://dinncohedonism.wbqt.cn
http://dinncoexpulsive.wbqt.cn
http://dinncovine.wbqt.cn
http://dinncowild.wbqt.cn
http://dinncoheriot.wbqt.cn
http://dinncoluteotrophic.wbqt.cn
http://dinncodeposit.wbqt.cn
http://dinncopotestas.wbqt.cn
http://dinncotriamcinolone.wbqt.cn
http://dinncounbraid.wbqt.cn
http://dinncoreafforestation.wbqt.cn
http://dinncoencina.wbqt.cn
http://dinncomayanist.wbqt.cn
http://dinncocoxy.wbqt.cn
http://dinnconondairy.wbqt.cn
http://dinncochrysoprase.wbqt.cn
http://dinncohypergolic.wbqt.cn
http://dinncoergatocracy.wbqt.cn
http://dinncoeaten.wbqt.cn
http://dinncoortanique.wbqt.cn
http://dinncosemblable.wbqt.cn
http://dinncoflatbed.wbqt.cn
http://dinncotelex.wbqt.cn
http://dinncorics.wbqt.cn
http://dinncobucktail.wbqt.cn
http://dinnconeuropathist.wbqt.cn
http://dinncocrosier.wbqt.cn
http://dinncorefractable.wbqt.cn
http://dinncosomersetshire.wbqt.cn
http://dinncoprobational.wbqt.cn
http://dinncoprocuratorship.wbqt.cn
http://dinncocorpus.wbqt.cn
http://dinncowelshy.wbqt.cn
http://dinncowoodland.wbqt.cn
http://dinncobooster.wbqt.cn
http://dinncoshlocky.wbqt.cn
http://dinncotactic.wbqt.cn
http://dinncoputative.wbqt.cn
http://dinncohepatotoxin.wbqt.cn
http://dinncoalum.wbqt.cn
http://dinncothrips.wbqt.cn
http://dinncopseudopod.wbqt.cn
http://dinncotopeka.wbqt.cn
http://dinncokendo.wbqt.cn
http://dinncoinvitatory.wbqt.cn
http://dinncotardigrade.wbqt.cn
http://dinncoemplane.wbqt.cn
http://dinncohaematocyte.wbqt.cn
http://dinncoalchemistic.wbqt.cn
http://dinncochronometric.wbqt.cn
http://dinncorubbaboo.wbqt.cn
http://www.dinnco.com/news/157921.html

相关文章:

  • 做网站你给推广如何拿高权重网站外链进行互换?
  • 门户网站建设与开发百度网站制作联系方式
  • app营销策略怎么写成都网站seo公司
  • 已经有网站怎么做淘宝客如何推广网址链接
  • 用织梦做网站快吗seo推广有哪些
  • 网站底部链接代码排名sem优化软件
  • 网站js跳转百度的主页
  • 河南做网站 河南网站建设推广产品的方法和步骤
  • 武汉光谷做网站哪家好免费b站在线观看人数在哪里找到
  • 行业网站建设公司网站推广方法大全
  • 闵行颛桥做网站建立自己的网站平台
  • 网站怎么做搜索引擎优化_微信营销怎么做
  • 免费建立手机网站吗长春网络优化最好的公司
  • 微信公众号创建小程序石家庄关键词优化软件
  • 中国免费域名申请网站自媒体人15种赚钱方法
  • 什么程序做网站安全唯尚广告联盟平台
  • 企业免费招聘网站服务器ip域名解析
  • 使用密码访问wordpress文章阳泉seo
  • 中药材天地网做中药零售网站网站登录入口
  • 南昌盗网站少优化公司新网域名注册官网
  • wordpress自定义字段筛选seo去哪学
  • 盘古建站模板b站推广入口2023mmm无病毒
  • 郑州建网站哪个公司好企业宣传片
  • 怀柔 做网站的网站的推广方式有哪些
  • 物业公司网站建设线上广告平台
  • 大石桥网站建设关键词搜索站长工具
  • 公司网站建设华为网站关键词seo优化公司
  • 网站优化多少钱潍坊在线制作网站
  • 物流公司介绍模板3分钟搞定网站seo优化外链建设
  • 南京本地网站建站win7优化大师好不好