using UnityEngine; using System.Collections.Generic; using UnityEngine.UI; public class ServerListWin : UIBase { // 组件引用 [SerializeField] CyclicScroll m_ServerGroupScroll; [SerializeField] CyclicScroll m_ServerScroll; [SerializeField] Button m_Close; // 生命周期 protected override void Awake() { base.Awake(); // 初始化组件引用 } protected override void Start() { base.Start(); // 初始化数据 } protected override void InitComponent() { base.InitComponent(); m_Close.AddListener(CloseWindow); } // UI事件 protected override void OnOpen() { base.OnOpen(); // 窗口打开时的逻辑 ServerListCenter.Instance.serverGroupSelectEvent += RefreshServerList; m_ServerGroupScroll.Init(ServerListCenter.Instance.GetAllServerGroup()); RefreshServerList(); } protected override void OnClose() { base.OnClose(); // 窗口关闭时的逻辑 ServerListCenter.Instance.serverGroupSelectEvent -= RefreshServerList; } public override void Refresh() { base.Refresh(); // 刷新UI显示 } private void RefreshServerList() { ServerGroup serverGroup = null; if (ServerListCenter.Instance.TryGetServerGroup(ServerListCenter.Instance.currentServerGroup, out serverGroup)) { if (serverGroup.group_list != null) { var groupDatas = new List(); var serverDataList = new List(serverGroup.group_list); for (int i = serverDataList.Count - 1; i >= 0; i--) { if (VersionConfig.Get().isBanShu) { if (serverDataList[i].region_flag != 8000) { serverDataList.RemoveAt(i); } } else { if (serverDataList[i].region_flag == 8000) { serverDataList.RemoveAt(i); } } } serverDataList.Sort(ServerData.Compare); var max = serverDataList.Count; for (int i = 0; i < max; i++, i++) { if (i + 1 < max) { groupDatas.Add(new ServerDataCouple(serverDataList[i], serverDataList[i + 1])); } else { groupDatas.Add(new ServerDataCouple(serverDataList[i])); } } m_ServerScroll.Init(groupDatas); } else { m_ServerScroll.Init(null); } } } }