using System; using System.Collections; using System.Collections.Generic; using BestHTTP; using DragonLi.Core; using TMPro; using Unity.XR.PXR; using UnityEngine; using UnityEngine.UI; /// /// 登录信息 /// public class LoginInfo { public string deviceSn = ""; public string startAt = ""; public int shop; public int gameId; } public class ResponseInfo { public int code = 400; public string msg = ""; } public class LoginPanel : MonoBehaviour { public UIState PanelState; private int RequestLoginCount = 0; public Image progressImage; public TextMeshProUGUI progressText; private int _progress; private bool _isLogin; public static void Show() { WorldUIManager.Ins.Cover("UI/LoginPanel", false); } public void Start() { #if !UNITY_EDITOR && UNITY_ANDROID && PICO #endif Author(); if (progressImage == null) return; StartCoroutine(Progress()); } public void Author() { //延迟请求 MonoSingleton.Instance.WaitSecondTodo(() => { // 登录 GameManager.Ins.Request((req, response) => { RequestLoginCount++; if (response == null) { Debug.Log("鉴权失败1"); if (RequestLoginCount < 2) { Author(); return; } PanelState.StateChange(1); return; } ResponseInfo info = JsonUtility.FromJson(response.DataAsText); if (info.code < 200 || info.code >= 300) { Debug.Log("鉴权失败2"); if (RequestLoginCount < 2) { Author(); return; } PanelState.StateChange(1); return; } if (info.code == 200) { GameManager.Ins.InitData(); _isLogin = true; } }); }, 1); } IEnumerator Progress() { progressImage.fillAmount = 0; progressText.text = "0%"; _progress = 0; _isLogin = false; GameManager.Ins.InitData(); //_isLogin = true;//修改为本地游戏 float curWaitTime = 0; while (_progress<=90) { //Debug.Log(_progress); progressText.text = _progress + "%"; progressImage.fillAmount = _progress/100f; _progress += 1; yield return new WaitForSeconds(0.02f); } Debug.Log("是否鉴定成功 :"+_isLogin); if (_isLogin) { while (_progress<=100) { progressText.text = _progress + "%"; progressImage.fillAmount = _progress/100f; _progress += 1; yield return new WaitForSeconds(0.02f); } Debug.Log("鉴权成功"); StartGame(); } else { while (!_isLogin && curWaitTime < 30) { curWaitTime += 1; yield return new WaitForSeconds(1f); } if (_isLogin) { while (_progress<=100) { progressText.text = _progress + "%"; progressImage.fillAmount = _progress/100f; _progress += 1; yield return new WaitForSeconds(0.02f); } StartGame(); } } } public void StartGame() { RequestLoginCount = 0; WorldUIManager.Ins.Back(); GameManager.Ins.CreateGameStartPoint(); } }