public UniTask StartAsync() { if (called) { return(UniTask.CompletedTask); } if (!awakeCalled) { PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, new AwakeMonitor(this)); } return(new UniTask(promise ?? (promise = new UniTaskCompletionSource()))); }
public _EveryValueChanged(TTarget target, Func <TTarget, TProperty> propertySelector, IEqualityComparer <TProperty> equalityComparer, PlayerLoopTiming monitorTiming, CancellationToken cancellationToken) { this.target = target; this.targetAsUnityObject = target as UnityEngine.Object; this.propertySelector = propertySelector; this.equalityComparer = equalityComparer; this.cancellationToken = cancellationToken; this.first = true; TaskTracker.TrackActiveTask(this, 2); PlayerLoopHelper.AddAction(monitorTiming, this); }
protected UniTask <T> GetOrAddPromise <T>(ref AsyncTriggerPromise <T> promise, ref AsyncTriggerPromiseDictionary <T> promises, CancellationToken cancellationToken) { if (destroyCalled) { return(UniTask.FromCanceled <T>()); } if (!cancellationToken.CanBeCanceled) { if (promise == null) { promise = new AsyncTriggerPromise <T>(); if (!calledAwake) { PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, new AwakeMonitor(this)); } } return(promise.Task); } if (promises == null) { promises = new AsyncTriggerPromiseDictionary <T>(); } if (promises.TryGetValue(cancellationToken, out var cancellablePromise)) { return(cancellablePromise.Task); } cancellablePromise = new AsyncTriggerPromise <T>(); promises.Add(cancellationToken, cancellablePromise); if (!calledAwake) { PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, new AwakeMonitor(this)); } var registrationToken = cancellationToken.RegisterWithoutCaptureExecutionContext(Callback, Tuple.Create((ICancellationTokenKeyDictionary)promises, (ICancelablePromise)cancellablePromise)); if (registeredCancellations == null) { registeredCancellations = ArrayPool <CancellationTokenRegistration> .Shared.Rent(4); } ArrayPoolUtil.EnsureCapacity(ref registeredCancellations, registeredCancellationsCount + 1, ArrayPool <CancellationTokenRegistration> .Shared); registeredCancellations[registeredCancellationsCount++] = registrationToken; return(cancellablePromise.Task); }
public void GetResult(short token) { try { core.GetResult(token); } finally { #if ENABLE_IL2CPP // workaround for IL2CPP bug. PlayerLoopHelper.AddContinuation(PlayerLoopTiming.LastPostLateUpdate, returnDelegate); #else TryReturn(); #endif } }
public Task InitAsync() { IsComponentAlive = true; if (!s_UniTaskInited) { var unitySynchronizationContetextField = typeof(PlayerLoopHelper).GetField("unitySynchronizationContetext", BindingFlags.Static | BindingFlags.NonPublic); unitySynchronizationContetextField.SetValue(null, SynchronizationContext.Current); var mainThreadIdField = typeof(PlayerLoopHelper).GetField("mainThreadId", BindingFlags.Static | BindingFlags.NonPublic); mainThreadIdField.SetValue(null, Thread.CurrentThread.ManagedThreadId); var playerLoop = PlayerLoop.GetDefaultPlayerLoop(); PlayerLoopHelper.Initialize(ref playerLoop); s_UniTaskInited = true; } return(OnInitAsync()); }
public _Timer(TimeSpan dueTime, TimeSpan?period, PlayerLoopTiming updateTiming, bool ignoreTimeScale, CancellationToken cancellationToken) { this.dueTime = (float)dueTime.TotalSeconds; this.period = (period == null) ? null : (float?)period.Value.TotalSeconds; if (this.dueTime <= 0) { this.dueTime = 0; } if (this.period != null) { if (this.period <= 0) { this.period = 1; } } this.dueTimePhase = true; this.updateTiming = updateTiming; this.ignoreTimeScale = ignoreTimeScale; TaskTracker.TrackActiveTask(this, 2); PlayerLoopHelper.AddAction(updateTiming, this); }
public Task WaitForStartAsync(CancellationToken cancellationToken) { if (!PlayerLoopHelper.IsInjectedUniTaskPlayerLoop()) { var unitySynchronizationContextField = typeof(PlayerLoopHelper).GetField("unitySynchronizationContext", BindingFlags.Static | BindingFlags.NonPublic); // For older version of UniTask unitySynchronizationContextField ??= typeof(PlayerLoopHelper).GetField("unitySynchronizationContetext", BindingFlags.Static | BindingFlags.NonPublic) ?? throw new Exception("Could not find PlayerLoopHelper.unitySynchronizationContext field"); unitySynchronizationContextField.SetValue(null, SynchronizationContext.Current); var mainThreadIdField = typeof(PlayerLoopHelper).GetField("mainThreadId", BindingFlags.Static | BindingFlags.NonPublic) ?? throw new Exception("Could not find PlayerLoopHelper.mainThreadId field"); mainThreadIdField.SetValue(null, Thread.CurrentThread.ManagedThreadId); var playerLoop = PlayerLoop.GetCurrentPlayerLoop(); PlayerLoopHelper.Initialize(ref playerLoop); } // Handle UniTask exception UniTaskScheduler.UnobservedTaskException += UniTaskExceptionHandler; // Do not switch thread UniTaskScheduler.DispatchUnityMainThread = false; TlsWorkaround.Install(); Application.quitting += OnApplicationQuitting; Console.CancelKeyPress += OnCancelKeyPress; return(Task.CompletedTask); }
private void Awake() { var playerLoop = PlayerLoop.GetCurrentPlayerLoop(); PlayerLoopHelper.Initialize(ref playerLoop); }
public UniTask AwakeAsync() { if (called) return UniTask.CompletedTask; PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, new AwakeMonitor(this)); return new UniTask(promise ?? (promise = new UniTaskCompletionSource())); }
public Task InitAsync() { // ReSharper disable PossibleNullReferenceException IsComponentAlive = true; m_Harmony = new Harmony(OpenModComponentId); m_Harmony.PatchAll(GetType().Assembly); m_UnturnedCommandHandler.Subscribe(); BindUnturnedEvents(); var ioHandlers = (List <ICommandInputOutput>) typeof(CommandWindow) .GetField("ioHandlers", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(Dedicator.commandWindow); CommandLineFlag shouldManageConsole = null; var previousShouldManageConsoleValue = true; if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { /* Fix Unturned destroying console and breaking Serilog formatting and colors */ var windowsConsole = typeof(Provider).Assembly.GetType("SDG.Unturned.WindowsConsole"); var shouldManageConsoleField = windowsConsole?.GetField("shouldManageConsole", BindingFlags.Static | BindingFlags.NonPublic); if (shouldManageConsoleField != null) { shouldManageConsole = (CommandLineFlag)shouldManageConsoleField.GetValue(null); previousShouldManageConsoleValue = shouldManageConsole.value; shouldManageConsole.value = false; } } m_IoHandlers = ioHandlers.ToList(); // copy Unturneds IoHandlers // unturned built-in io handlers var defaultIoHandlers = ioHandlers.Where(c => c.GetType().FullName.Equals("SDG.Unturned.ThreadedWindowsConsoleInputOutput") || // type doesnt exist on Linux c.GetType().FullName.Equals("SDG.Unturned.WindowsConsoleInputOutput") || // type doesnt exist on Linux c.GetType() == typeof(ThreadedConsoleInputOutput) || c.GetType() == typeof(ConsoleInputOutput)).ToList(); foreach (var ioHandler in defaultIoHandlers) { Dedicator.commandWindow.removeIOHandler(ioHandler); } if (shouldManageConsole != null) { shouldManageConsole.value = previousShouldManageConsoleValue; } m_OpenModIoHandler = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ActivatorUtilities.CreateInstance <OpenModWindowsConsoleInputOutput>(m_ServiceProvider) : ActivatorUtilities.CreateInstance <OpenModConsoleInputOutput>(m_ServiceProvider); Dedicator.commandWindow.addIOHandler(m_OpenModIoHandler); m_Logger.LogInformation($"OpenMod for Unturned v{m_HostInformation.HostVersion} is initializing..."); TlsWorkaround.Install(); if (!s_UniTaskInited) { var unitySynchronizationContetextField = typeof(PlayerLoopHelper).GetField("unitySynchronizationContetext", BindingFlags.Static | BindingFlags.NonPublic); unitySynchronizationContetextField.SetValue(null, SynchronizationContext.Current); var mainThreadIdField = typeof(PlayerLoopHelper).GetField("mainThreadId", BindingFlags.Static | BindingFlags.NonPublic); mainThreadIdField.SetValue(null, Thread.CurrentThread.ManagedThreadId); var playerLoop = PlayerLoop.GetDefaultPlayerLoop(); PlayerLoopHelper.Initialize(ref playerLoop); s_UniTaskInited = true; } m_Logger.LogInformation("OpenMod for Unturned is ready."); BroadcastPlugins(); return(Task.CompletedTask); // ReSharper restore PossibleNullReferenceException }
static void Initialize() { var playerLoop = ScriptBehaviourUpdateOrder.CurrentPlayerLoop; PlayerLoopHelper.Initialize(ref playerLoop); }
async UniTaskVoid Start() { RunStandardTaskAsync(); UnityEngine.Debug.Log("UniTaskPlayerLoop ready? " + PlayerLoopHelper.IsInjectedUniTaskPlayerLoop()); //var url = "http://google.com/404"; //var webRequestAsyncOperation = UnityWebRequest.Get(url).SendWebRequest(); //await webRequestAsyncOperation.ToUniTask(); //PlayerLoopInfo.Inject(); //_ = AsyncFixedUpdate(); //StartCoroutine(CoroutineFixedUpdate()); //StartCoroutine(TestCoroutine().ToCoroutine()); // Application.logMessageReceived += Application_logMessageReceived; // var rp = new AsyncReactiveProperty<int>(); // rp.AddTo(this.GetCancellationTokenOnDestroy()); //var cts = new CancellationTokenSource(); // UniTask.Post( // CancellationToken. //UniTask.Delay(TimeSpan.FromSeconds(3)). //okButton.onClick.AddListener(UniTask.UnityAction(async () => //{ // _ = ExecuteAsync(); // await UniTask.Yield(); // //await DelayCheck(); // /* // UnityEngine.Debug.Log("click:" + PlayerLoopInfo.CurrentLoopType); // StartCoroutine(CoroutineRun()); // StartCoroutine(CoroutineRun2()); // _ = AsyncRun(); // _ = AsyncLastUpdate(); // _ = AsyncLastLast(); // */ // //await UniTask.Yield(); // //_ = Test2(); // // EarlyUpdate.ExecuteMainThreadJobs // // _ = Test2(); // //var t = await Resources.LoadAsync<TextAsset>(Application.streamingAssetsPath + "test.txt"); // //Debug.Log("LoadEnd" + PlayerLoopInfo.CurrentLoopType + ", " + (t != null)); // //Debug.Log("LoadEnd" + PlayerLoopInfo.CurrentLoopType + ", " + ((TextAsset)t).text); // //await UniTask.Yield(PlayerLoopTiming.LastUpdate); // //UnityEngine.Debug.Log("after update:" + Time.frameCount); // ////await UniTask.NextFrame(); // ////await UniTask.Yield(); // ////UnityEngine.Debug.Log("after update nextframe:" + Time.frameCount); // //StartCoroutine(CoroutineRun2()); // ////StartCoroutine(CoroutineRun()); // //UnityEngine.Debug.Log("FOO?"); // //_ = DelayFrame3_Pre(); // //await UniTask.Yield(); //})); //cancelButton.onClick.AddListener(UniTask.UnityAction(async () => //{ // _ = DelayFrame3_Post(); // await UniTask.Yield(); // //await UniTask.Yield(PlayerLoopTiming.LastPreUpdate); // //UnityEngine.Debug.Log("before update:" + Time.frameCount); // //await UniTask.NextFrame(); // //await UniTask.Yield(); // //UnityEngine.Debug.Log("before update nextframe:" + Time.frameCount); // //StartCoroutine(CoroutineRun()); // //UnityEngine.Debug.Log("click:" + PlayerLoopInfo.CurrentLoopType); // //_ = Yieldding(); // //var cts = new CancellationTokenSource(); // //UnityEngine.Debug.Log("click:" + PlayerLoopInfo.CurrentLoopType + ":" + Time.frameCount); // //var la = SceneManager.LoadSceneAsync("Scenes/ExceptionExamples").WithCancellation(cts.Token); // ////cts.Cancel(); // //await la; // //UnityEngine.Debug.Log("End LoadSceneAsync" + PlayerLoopInfo.CurrentLoopType + ":" + Time.frameCount); //})); //return; //await UniTask.SwitchToMainThread(); //UniTaskAsyncEnumerable.EveryValueChanged(mcc, x => x.MyProperty) // .Do(_ => { }, () => Debug.Log("COMPLETED")) // .ForEachAsync(x => // { // Debug.Log("VALUE_CHANGED:" + x); // }) // .Forget(); //_ = Test1(); //Test2().Forget(); //StartCoroutine(Test3("https://bing.com/")); //bool flip = false; //var rect = cancelButton.GetComponent<RectTransform>(); //var cts = new CancellationTokenSource(); //var ct = cts.Token; //okButton.onClick.AddListener(UniTask.UnityAction(async () => //{ // await rect.DOMoveX(10f * (flip ? -1 : 1), 3).OnUpdate(() => { Debug.Log("UPDATE YEAH"); }).WithCancellation(ct); // flip = !flip; // // ok. //})); //cancelButton.onClick.AddListener(() => //{ // cts.Cancel(); //}); // DG.Tweening.Core.TweenerCore<int> //Debug.Log("GO MOVEX"); //await okButton.GetComponent<RectTransform>().DOMoveX(-10.2f, 3).WithCancellation(CancellationToken.None); //Debug.Log("END MOVEX"); //Debug.Log("AGAIN MOVE"); //await okButton.GetComponent<RectTransform>().DOMoveY(10.2f, 3).WithCancellation(CancellationToken.None); //Debug.Log("AGAIN END MOVE"); //Debug.Log(Test().GetType().FullName); // check stacktrace // await UniTaskAsyncEnumerable.EveryUpdate().Where((x, i) => i % 2 == 0).Select(x => x).DistinctUntilChanged().ForEachAsync(x => //{ // Debug.Log("test"); //}); //// DOTween.To( //var cts = new CancellationTokenSource(); ////var tween = okButton.GetComponent<RectTransform>().DOLocalMoveX(100, 5.0f); //cancelButton.OnClickAsAsyncEnumerable().ForEachAsync(_ => //{ // cts.Cancel(); //}).Forget(); //// await tween.ToUniTask(TweenCancelBehaviour.KillAndCancelAwait, cts.Token); ////tween.SetRecyclable(true); //Debug.Log("END"); //// tween.Play(); //// DOTween. //// DOVirtual.Float(0, 1, 1, x => { }).ToUniTask(); //await foreach (var _ in UniTaskAsyncEnumerable.EveryUpdate()) //{ // Debug.Log("Update() " + Time.frameCount); //} //await okButton.OnClickAsAsyncEnumerable().Where((x, i) => i % 2 == 0).ForEachAsync(_ => //{ //}); //okButton.OnClickAsAsyncEnumerable().ForEachAsync(_ => //{ //foreach (var (type, size) in TaskPool.GetCacheSizeInfo()) //{ // Debug.Log(type + ":" + size); //} //}).Forget(); //CloseAsync(this.GetCancellationTokenOnDestroy()).Forget(); //okButton.onClick.AddListener(UniTask.UnityAction(async () => await UniTask.Yield())); //UpdateUniTask().Forget(); //StartCoroutine(Coroutine()); // PlayerLoopInfo.Inject(); await UniTask.Delay(TimeSpan.FromSeconds(1)); PlayerLoopInfo.DumpPlayerLoop("current", PlayerLoop.GetCurrentPlayerLoop()); // _ = ReturnToMainThreadTest(); //GameObject.Destroy(this.gameObject); }
async UniTaskVoid Start() { // UniTask.Delay(TimeSpan.FromSeconds(1)).TimeoutWithoutException var currentLoop = PlayerLoop.GetDefaultPlayerLoop(); PlayerLoopHelper.Initialize(ref currentLoop, InjectPlayerLoopTimings.Minimum); // minimum is Update | FixedUpdate | LastPostLateUpdate var cancelToken = new CancellationTokenSource(); cancelButton.onClick.AddListener(() => { cancelToken.Cancel(); // cancel from button click. }); var timeoutToken = new CancellationTokenSource(); timeoutToken.CancelAfterSlim(TimeSpan.FromSeconds(5)); // 5sec timeout. try { // combine token var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancelToken.Token, timeoutToken.Token); await UnityWebRequest.Get("http://foo").SendWebRequest().WithCancellation(linkedTokenSource.Token); } catch (OperationCanceledException ex) { if (timeoutToken.IsCancellationRequested) { UnityEngine.Debug.Log("Timeout."); } else if (cancelToken.IsCancellationRequested) { UnityEngine.Debug.Log("Cancel clicked."); } _ = ex; } // TestAsync(cts.Token).Forget(); okButton.onClick.AddListener(UniTask.UnityAction(async() => { // try timeout try { //await UniTask.Delay(TimeSpan.FromSeconds(2), cancellationToken: timeoutController.Timeout(TimeSpan.FromSeconds(3))); UnityEngine.Debug.Log("Delay Complete, Reset(and reuse)."); //timeoutController.Reset(); } catch (OperationCanceledException ex) { //UnityEngine.Debug.Log("Timeout! FromTimeout?:" + timeoutController.IsTimeout()); _ = ex; } await UniTask.Yield(); })); cancelButton.onClick.AddListener(UniTask.UnityAction(async() => { //clickCancelSource.Cancel(); //RunCheck(PlayerLoopTiming.Initialization).Forget(); //RunCheck(PlayerLoopTiming.LastInitialization).Forget(); //RunCheck(PlayerLoopTiming.EarlyUpdate).Forget(); //RunCheck(PlayerLoopTiming.LastEarlyUpdate).Forget(); //RunCheck(PlayerLoopTiming.FixedUpdate).Forget(); //RunCheck(PlayerLoopTiming.LastFixedUpdate).Forget(); //RunCheck(PlayerLoopTiming.PreUpdate).Forget(); //RunCheck(PlayerLoopTiming.LastPreUpdate).Forget(); //RunCheck(PlayerLoopTiming.Update).Forget(); //RunCheck(PlayerLoopTiming.LastUpdate).Forget(); //RunCheck(PlayerLoopTiming.PreLateUpdate).Forget(); //RunCheck(PlayerLoopTiming.LastPreLateUpdate).Forget(); //RunCheck(PlayerLoopTiming.PostLateUpdate).Forget(); //RunCheck(PlayerLoopTiming.LastPostLateUpdate).Forget(); await UniTask.Yield(); })); await UniTask.Yield(); }
private void Start() { var playerLoop = UnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop(); PlayerLoopHelper.Initialize(ref playerLoop); }
private async void Start() { //启动UniTask Player Loop 注册事件 PlayerLoopHelper.Init(); if (isShowDebugWindow) { goDebug.SetActive(true); } else { goDebug.SetActive(false); } if (isShowFPS) { ResourcesHelper.InstantiatePrefabFromResourceSetDefault("UIFrameShow", UIRoot.instance.GetUIRootCanvasTop().transform); } Screen.sleepTimeout = SleepTimeout.NeverSleep; Application.runInBackground = true; Application.targetFrameRate = TargetFrameRate; StaticData.IsABNotFromServer = isABNotFromServer; StaticData.isABUsedYunSever = isABUsedYunSever; StaticData.SelfResourceServerIpAndPort = selfResourceServerIpAndPort; StaticData.localVersionGameCode = versionGameCode; StaticData.isOpenGuide = isOpenGuide; #if UNITY_EDITOR StaticData.linguisticType = LanguageType; #else switch (Application.systemLanguage) { case SystemLanguage.Chinese: case SystemLanguage.ChineseSimplified: StaticData.linguisticType = LinguisticType.Simplified; break; case SystemLanguage.ChineseTraditional: StaticData.linguisticType = LinguisticType.Complex; break; case SystemLanguage.English: case SystemLanguage.Unknown: StaticData.linguisticType = LinguisticType.English; break; default: StaticData.linguisticType = LinguisticType.English; break; } #endif StaticData.GameShowVersion = GameShowVersion; StaticData.isShowSelfLog = isShowSelfLog; try { //播放背景音乐 GameSoundPlayer.Instance.PlayBgMusic(MusicHelper.BgMusicLogin); StaticData.isUseAssetBundle = isUseAssetBundle; DontDestroyOnLoad(gameObject); gameObject.AddComponentIfNull <GlobalConfigComponent>(); gameObject.AddComponentIfNull <ResourcesComponent>(); BundleDownloaderComponent bundleDownloaderComponent = gameObject.AddComponentIfNull <BundleDownloaderComponent>(); var IsGameVersionCodeEqual = await BundleHelper.IsGameVersionCodeEqual(); if (!IsGameVersionCodeEqual) { return; } // 下载ab包 await BundleHelper.DownloadBundle(); GameObject.Destroy(bundleDownloaderComponent); //初始化ABManager ABManager.Init(); //数据表格解析 ParseExcelData parseExcelData = new ParseExcelData(); StaticData.configExcel = parseExcelData.Init(); //用来拿取服务器 StaticData.IsiosRelease = StaticData.configExcel.GetVertical().IsiosRelease; StaticData.IsAndoridRelease = StaticData.configExcel.GetVertical().IsAndoridRelease; //Test Excel int WarehouseTotal = StaticData.configExcel.GetVertical().WarehouseTotal; Debug.Log($"WarehouseTotal:{WarehouseTotal}"); ////下载好了,声音ab绑定到固定的地方 //await ResetSoundPlayers(); //GameSoundPlayer.Instance.PlayBgMusic("BGM"); //GameSoundPlayer.Instance.PlaySoundEffect("PrintPhotos"); //ResourcesHelper.CreateUI("UIWait"); await UniTask.DelayFrame(1); //添加SceneManager GameObject goSceneManager = new GameObject("SceneManager"); goSceneManager.transform.parent = transform; goSceneManager.AddComponent <SceneManagerComponent>(); // 设置请求短链接参数 StaticData.IsUsedLocalDataNotServer = IsUsedLocalDataNotServer; /* * //加载网关 * TextAsset gatewayInfo = await ABManager.GetAssetAsync<TextAsset>("GateWayInfo"); * switch (typeGate) * { * case TypeGateWay.Stable: * gatewayInfo = await ABManager.GetAssetAsync<TextAsset>("GateWayInfo"); * break; * case TypeGateWay.MZQ: * gatewayInfo = await ABManager.GetAssetAsync<TextAsset>("GateWayInfoMZQ"); * break; * case TypeGateWay.YQX: * gatewayInfo = await ABManager.GetAssetAsync<TextAsset>("GateWayInfoYQX"); * break; * case TypeGateWay.JLF: * gatewayInfo = await ABManager.GetAssetAsync<TextAsset>("GateWayInfoJLF"); * break; * case TypeGateWay.Extranet: * gatewayInfo = await ABManager.GetAssetAsync<TextAsset>("GateWayInfoExtranet"); * break; * } * * GateWayInfo gateWayInfo=LitJson.JsonMapper.ToObject<GateWayInfo>(gatewayInfo.text); * //StaticData.DebugGreen($"gateWayInfo ip:{gateWayInfo.ipGateWay} port:{gateWayInfo.portGateWay} timeout:{gateWayInfo.timeout}"); * bool isGateWayReturn = false; * string urlGateWay = $"{gateWayInfo.ipGateWay}:{gateWayInfo.portGateWay}"; * if (!StaticData.IsUsedLocalDataNotServer) * { * CSLinkInfo csLinkInfo = new CSLinkInfo() { Sole = SystemInfo.deviceUniqueIdentifier }; * csLinkInfo.Sole = string.Empty;//授权使用的唯一id * csLinkInfo.Platform = RegisterPlatform.None;//授权平台 * * //发起链接请求 * StartCoroutine(HttpGateWayManager.Post(urlGateWay, csLinkInfo, gateWayInfo.timeout, (ip, port, Uid) => * { * StaticData.ipWebSocket = ip; * StaticData.portWebSocket = port; * StaticData.Uid = Uid; * StaticData.DebugGreen($"玩家的uid:{Uid}"); * isGateWayReturn = true; * }, (WebErrorCode webErrorCode) => * { * StaticData.DebugGreen($"webErrorCode:{webErrorCode.ToString()}"); * isGateWayReturn = false; * })); * * await UniTask.WaitUntil(() => isGateWayReturn == true); * //进行长连接 使用WebSocket * WebSocketComponent._instance.Init(); * } * * //获取用户信息 * bool isGetUserInfo = false; * CSEmptyAccountInfo csEmptyAccountInfo = new CSEmptyAccountInfo(); * OtherProtoHelper.GetUserInfo(csEmptyAccountInfo,(userInfo)=> { * StaticData.playerInfoData.userInfo = userInfo; * TimeHelper.LoginServerTime = StaticData.playerInfoData.userInfo.PresentTime; * StaticData.DebugGreen($"ServerTime:{TimeHelper.ServerTime(TimeHelper.LoginServerTime)}"); * isGetUserInfo = true; * }); * await UniTask.WaitUntil(() => isGetUserInfo == true); * //加载本地存储的私聊信息/文件 * StaticData.LoadPrivateChatFile(); */ //登录界面 await StaticData.OpenUILogin(typeGate, null); //关闭Init背景 UIRoot.instance.GoBgInit.SetActive(false); } catch (Exception e) { Debug.LogError(e); } }