using UnityEngine; using UnityEngine.EventSystems; using DG.Tweening; using UnityEngine.UI; namespace Assets.Scripts.Scenes.VideoRide { public class RankingScript: MonoBehaviour { GameObject Hide { get; set; } GameObject Show { get; set; } GameObject Month { get; set; } GameObject Week { get; set; } GameObject Day { get; set; } VideoGameManager manager { get; set; } Transform Container { get; set; } Text MonthTxt { get; set; } Text WeekTxt { get; set; } Text DayTxt { get; set; } private bool isAnimating = false; private void Start() { Hide = transform.Find("Head/Hide").gameObject; Show = transform.Find("Head/Show").gameObject; Month = transform.Find("Head/Month").gameObject; Week = transform.Find("Head/Week").gameObject; Day = transform.Find("Head/Day").gameObject; MonthTxt = transform.Find("Head/Month/Text").GetComponent(); MonthTxt.color = Color.red; WeekTxt = transform.Find("Head/Week/Text").GetComponent(); DayTxt = transform.Find("Head/Day/Text").GetComponent(); manager = FindObjectOfType(); Container = transform.Find("List/Viewport/Content"); Month.GetComponent(); UIManager.AddEvent(Hide, UnityEngine.EventSystems.EventTriggerType.PointerClick, Hidehandler); UIManager.AddEvent(Show, UnityEngine.EventSystems.EventTriggerType.PointerClick, Showhandler); UIManager.AddEvent(Month, UnityEngine.EventSystems.EventTriggerType.PointerClick, MonthClick); UIManager.AddEvent(Week, UnityEngine.EventSystems.EventTriggerType.PointerClick, WeekClick); UIManager.AddEvent(Day, UnityEngine.EventSystems.EventTriggerType.PointerClick, DayClick); #if UNITY_EDITOR UIManager.InitNow();//重置当前时间 #endif Refresh(); } //TODO: 重构 private void Refresh(string type = "month") { return; var list = manager.GetRankingList(type); if (list != null) { var prefab = Resources.Load("UI/Prefab/AR/RankingItem"); Container.DestroyChildren(); foreach (var item in list.list) { GameObject newObj = (GameObject)Instantiate(prefab, Container); var itemScript = newObj.GetComponent(); itemScript.SetName(item.NickName); var texture = manager.GetCountryImageByCode(item.CountryCode); itemScript.SetCountry(texture); itemScript.SetTimer(item.TotalTime); } } } public void Hidehandler(BaseEventData data) { if (isAnimating) return; isAnimating = true; transform.DOLocalMoveX(-913, 1f).onComplete+=()=> { Show.SetActive(true); Hide.SetActive(false); isAnimating = false; }; } public void Showhandler(BaseEventData data) { if (isAnimating) return; isAnimating = true; Show.SetActive(false); Hide.SetActive(true); transform.DOLocalMoveX(-667, 1f).onComplete += () => { isAnimating = false; }; } public void MonthClick(BaseEventData data) { MonthTxt.color = Color.red; WeekTxt.color = Color.white; DayTxt.color = Color.white; Refresh("month"); } public void WeekClick(BaseEventData data) { MonthTxt.color = Color.white; WeekTxt.color = Color.red; DayTxt.color = Color.white; Refresh("week"); } public void DayClick(BaseEventData data) { MonthTxt.color = Color.white; WeekTxt.color = Color.white; DayTxt.color = Color.red; Refresh("day"); } } }