using Assets.Scenes.Ride.Scripts; using Assets.Scenes.Ride.Scripts.Model; using Assets.Scripts; using Assets.Scripts.Devices.Ant; using Assets.Scripts.Scenes; using Assets.Scripts.UI.Prefab.Device; using DG.Tweening; using Mapbox.Examples; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class MainController : BaseScene { [SerializeField] GameObject root; private Text Version; protected override void Awake() { base.Awake(); Debug.Log("执行25"); MapUDPService.MessageListener = ListenerHandler; Version = this.transform.Find("GameObject").Find("Version").GetComponent(); Version.text = "V" + App.AppVersion; DeviceCache.Init(PFConstants.DeviceCacheFolder); Loom.Initialize(); msg = transform.Find("GameObject/Message").GetComponent(); InitialMessage(); MailReceiver.Instance().GetMessage(); #if UNITY_ANDROID || UNITY_IOS transform.GetComponent().referenceResolution = new Vector2(844, 390); //transform.Find("Panel").GetComponent().sizeDelta = new Vector2(844, 390); var rectTransform = transform.Find("Panel").GetComponent(); rectTransform.anchorMin = Vector2.zero; rectTransform.anchorMax = Vector2.one; rectTransform.offsetMin = Vector2.zero; rectTransform.offsetMax = Vector2.zero; transform.Find("GameObject/Version").gameObject.SetActive(false); //var rect1 = transform.Find("GameObject").GetComponent(); //rect1.anchorMin = Vector2.zero; //rect1.anchorMax = Vector2.one; //rect1.offsetMin = Vector2.zero; //rect1.offsetMax = Vector2.zero; //transform.Find("ModalPanel").GetComponent().sizeDelta = new Vector2(844, 390); #else var modalRect = transform.Find("ModalPanel").GetComponent(); modalRect.anchorMin = new Vector2(0.5f, 0.5f); modalRect.anchorMax = new Vector2(0.5f, 0.5f); modalRect.offsetMin = Vector2.zero; modalRect.offsetMax = Vector2.zero; modalRect.sizeDelta = new Vector2(1600, 900); App.MainDeviceAdapter.StartScan(); #endif EventQueueSystem.AddListener(LinkedMessageHandler); App.isHomeChanged -= OnIsHomeChanged; App.isHomeChanged += OnIsHomeChanged; } #region 显示消息有关 //切换页面后 private void OnIsHomeChanged(object sender, EventArgs e) { //DOTween.KillAll(); FinishMessage(sender); } private bool DataSorceChanged { get; set; } private void ListenerHandler(List message) { var msg = message.Where(c => c.RoomList != null && c.RoomList.Count > 0).FirstOrDefault(); if (msg != null) { App.gameRoomDetail = msg.RoomList.FirstOrDefault(); DataSorceChanged = true; } } List msgs; Vector3 msgLocation; int msgIndex = 0; CanvasGroup rightMessage; private void InitialMessage() { Debug.Log("初始化组件"); #if UNITY_STANDALONE_WIN msgLocation = 1 * msg.transform.localPosition; var go = transform.Find("GameObject"); rightMessage = Instantiate(msg); DestroyImmediate(transform.Find("GameObject/Message").gameObject); rightMessage.transform.SetParent(go); rightMessage.transform.localScale = Vector3.one; rightMessage.transform.localPosition = 1 * msgLocation; rightMessage.alpha = 0; msgs = new List { rightMessage }; for (int i = 0; i < 4; i++) { var tmpm = Instantiate(rightMessage); tmpm.transform.SetParent(rightMessage.transform.parent); tmpm.transform.localPosition = 1 * msgLocation; tmpm.transform.localScale = Vector3.one; tmpm.alpha = 0; msgs.Add(tmpm); } #else msgLocation = new Vector3(168, 37-46, 0); var go = transform.Find("GameObject"); go.GetComponent().anchorMin = Vector2.zero; go.GetComponent().anchorMax = Vector2.one; go.GetComponent().offsetMax = Vector2.zero; go.GetComponent().offsetMin = Vector2.zero; DestroyImmediate(transform.Find("GameObject/Message").gameObject); var m = Resources.Load("UI/Prefab/NewRoute/Mobile/Message"); rightMessage = Instantiate(m).GetComponent(); rightMessage.transform.SetParent(go); rightMessage.transform.localScale = Vector3.one; rightMessage.transform.localPosition = 1 * msgLocation; rightMessage.alpha = 0; msgs = new List { rightMessage }; for (int i = 0; i < 4; i++) { var tmpm = Instantiate(rightMessage); tmpm.transform.SetParent(rightMessage.transform.parent); tmpm.transform.localPosition = 1 * msgLocation; tmpm.transform.localScale = Vector3.one; tmpm.alpha = 0; msgs.Add(tmpm); } Debug.Log(rightMessage.GetComponent().localPosition); //rightMessage.transform.SetParent(transform.Find("GameObject")); #endif } private void ShowQueueMessage() { int i = 0, count = App.globalMessageQueue.Count; while (App.globalMessageQueue.Count != 0) { //SetMessage(msgs[i], App.globalMessageQueue.Dequeue()); var v = 1 * msgLocation; // 0 1 2 // 2 1 0 msgs[i].transform.localPosition = new Vector3(v.x, v.y - (count - 1 - i) * moveOffset, v.z); msgs[i].alpha = 1; msgs[i].gameObject.SetActive(true); SetMessage(msgs[i], App.globalMessageQueue.Dequeue()); i++; } msgIndex = i; } private void LinkedMessageHandler(LinkedMessageEvent e) { if (App.globalMessageQueue.Count == 5) { App.globalMessageQueue.Dequeue(); } App.globalMessageQueue.Enqueue(e); emptyt = 0; if (App.currentPageIsHome) { DoMessage6(e); } } #if UNITY_STANDALONE_WIN float moveOffset = 74; #else float moveOffset = 38; #endif private void DoMessage6(LinkedMessageEvent e) { //Resources.UnloadUnusedAssets(); //GC.Collect(); Debug.Log(msgIndex); var selectIndex = msgIndex % 5; var m = msgs[selectIndex]; if (msgIndex >= 5) // { //msgIndex = 0; Sequence se = DOTween.Sequence(); //m.transform.DOLocalMoveY(m.transform.localPosition.y - 38, 0.5f); foreach (var item in msgs) { se.Join(item.transform.DOLocalMoveY(item.transform.localPosition.y - moveOffset, 0.5f)); } se.Join(m.DOFade(0, 0.5f)); se.Play().onComplete = () => { SetMessage(m, e); m.transform.localPosition = 1 * msgLocation; m.DOFade(1, 0.5f); }; } else { SetMessage(m, e); Sequence se = DOTween.Sequence(); for (int i = 0; i < msgIndex; i++) { var rect = msgs[i].GetComponent(); se.Join(rect.DOLocalMoveY(rect.localPosition.y - moveOffset, 0.5f)); } se.Join(m.DOFade(1, 0.5f)); se.Play(); } m.transform.SetAsLastSibling(); msgIndex++; } void FinishMessage(object sender) { if (!(bool)sender) { //FinishMessage6(); //DOTween.CompleteAll(true); DOTween.CompleteAll(true); transform.Find("GameObject").gameObject.SetActive(false); } else { transform.Find("GameObject").gameObject.SetActive(true); } //#if UNITY_STANDALONE_WIN // if ((bool)sender) // { // FinishMessageRight(); // } // else // { // FinishMessageLeft(); // } //#else //#endif } void FinishMessageLeft() { //#if UNITY_STANDALONE_WIN // msgIndex = 0; // if (msgs != null) // { // foreach (var item in msgs) // { // item.DOFade(0, 0.3f); // } // } //#endif } private void SetMessage(CanvasGroup m,LinkedMessageEvent e) { m.GetComponent