From 554eda43e00d5817cd3e06a60e39d4bd882ee584 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Wed, 25 Nov 2020 10:33:33 +0800 Subject: [PATCH] Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle into master --- Assets/Scripts/UI/FinalPanel/FinalPanel.cs | 214 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 196 insertions(+), 18 deletions(-) diff --git a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs index 2c88ee8..cba824a 100644 --- a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs +++ b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs @@ -1,37 +1,60 @@ -using UnityEngine.UI; +using System.Collections.Generic; +using System.Collections; +using UnityEngine.UI; using UnityEngine; using EnhancedUI; using EnhancedUI.EnhancedScroller; using TMPro; using UnityEngine.SceneManagement; using KTGMGemClient; +using DG.Tweening; +using System; public class FinalPanel : MonoBehaviour, IEnhancedScrollerDelegate { - private EnhancedScroller scroller; + //private EnhancedScroller scroller; - private SmallList<FinalPanelItemData> _data; - + //private SmallList<FinalPanelItemData> _data; + private List<FinalPanelItemData> _data; public EnhancedScrollerCellView cellViewPrefab; [SerializeField] private Sprite rank_di_0, rank_di_1, rank_di_2, rank_di_03; [SerializeField] private Sprite rank_icon_0, rank_icon_1, rank_icon_2; + private string endlessGameScene = "Endless2D"; - public string endlessGameScene = "Endless"; - - public string loadingScene = "LoadingScene"; + private string loadingScene = "LoadingScene"; + Button closeBtn; // Start is called before the first frame update void Start() { - - transform.Find("BackGround").GetComponent<Button>().onClick.AddListener(() => + closeBtn = transform.Find("BackGround").GetComponent<Button>(); + closeBtn.onClick.AddListener(() => { gameObject.SetActive(false); GameConfig.NextSceneName = endlessGameScene; SceneManager.LoadScene(loadingScene); }); + closeBtn.interactable = false; + } + Text waveText; + GameObject image_HScore; + Text scoreText; + GameObject image_NewRecord; + bool isNewH = false; + int hScore; + CanvasGroup scrollerCanvasGroup; + + Action playEffectAC = null; + + /// <summary> + /// 设置播放胜利特效 + /// </summary> + /// <param name="ac"></param> + public void SetPlayEffectAC(Action ac) + { + playEffectAC = ac; } /// <summary> @@ -41,31 +64,175 @@ /// <param name="myScore">789220</param> public void SetData(string waveInfo, int myScore) { - transform.Find("Text_Wave").GetComponent<Text>().text = waveInfo; - int hScore = PlayerPrefs.GetInt("GemBattleHScore"); + hScore = PlayerPrefs.GetInt("GemBattleHScore"); + scrollerCanvasGroup = transform.Find("Scroll View").GetComponent<CanvasGroup>(); + //scrollerCanvasGroup = transform.Find("Scroller").GetComponent<CanvasGroup>(); if (myScore > hScore) { PlayerPrefs.SetInt("GemBattleHScore", myScore); hScore = myScore; + isNewH = true; } - transform.Find("Text_Score").GetComponent<Text>().text = myScore.ToString(); - transform.Find("Text_HScore").GetComponent<TextMeshProUGUI>().text = hScore.ToString(); + transform.Find("Image_HScore/Text_HScore").GetComponent<TextMeshProUGUI>().text = hScore.ToString(); + image_HScore = transform.Find("Image_HScore").gameObject; + image_HScore.SetActive(false); - scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>(); + waveText = transform.Find("Text_Wave").GetComponent<Text>(); + scoreText = transform.Find("Text_Score").GetComponent<Text>(); + scoreText.text = ""; + waveText.text = ""; + waveText.gameObject.SetActive(false); + scoreText.gameObject.SetActive(false); - scroller.Delegate = this; - + image_NewRecord = transform.Find("Image_NewRecord").gameObject; + image_NewRecord.SetActive(false); LoadLargeData(hScore); + + Transform ts = transform.Find("Images"); + + Sequence agentTweenSeq = DOTween.Sequence(); + //先出现 + Image tsTiele = transform.Find("Image_Tiele").GetComponent<Image>(); + agentTweenSeq.Append(tsTiele.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 + agentTweenSeq.Join(tsTiele.DOFade(1, 0.3f)); + + Image Image1 = transform.Find("Image1").GetComponent<Image>(); + agentTweenSeq.Append(Image1.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 + agentTweenSeq.Join(Image1.DOFade(1, 0.2f)); + agentTweenSeq.Join(waveText.DOText(waveInfo, 0.2f)); + + Image Image2 = transform.Find("Image2").GetComponent<Image>(); + agentTweenSeq.Append(Image2.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 + agentTweenSeq.Join(Image2.DOFade(1, 0.2f)); + + agentTweenSeq.AppendCallback(StartLoadLargeData); + + Image Image3 = transform.Find("Image3").GetComponent<Image>(); + agentTweenSeq.Append(Image3.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 + agentTweenSeq.Join(Image3.DOFade(1, 0.2f)); + agentTweenSeq.Join(DOTween.To(delegate (float value) + { + var temp = Math.Floor(value); + scoreText.text = temp + ""; + }, 0, myScore, 1.0f)); + + tsLight = transform.Find("ImageLight"); + Image ImageLight = tsLight.GetComponent<Image>(); + agentTweenSeq.Join(ImageLight.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 + agentTweenSeq.Join(ImageLight.DOFade(1, 0.2f).OnComplete(RotateLight)); + //agentTweenSeq.AppendCallback(RotateLight); + + agentTweenSeq.AppendCallback(TextDoTweenFinish); } + bool isRotate = false; + float offect = 0; + /// <summary> + /// LateUpdate is called every frame, if the Behaviour is enabled. + /// It is called after all Update functions have been called. + /// </summary> + void LateUpdate() + { + if (isRotate) + { + offect += Time.deltaTime; + tsLight.localRotation = Quaternion.Euler(0, 0, offect * 30); + } + } + + /// <summary> + /// 开始展示排行榜 + /// </summary> + protected void StartLoadLargeData() + { + scoreText.gameObject.SetActive(true); + StartCoroutine(PlayerItemDoTween()); + } + + /// <summary> + /// 播放排行榜动效 + /// </summary> + /// <returns></returns> + IEnumerator PlayerItemDoTween() + { + //yield return 1f; + // FinalPanelItem[] allItems = transform.Find("Scroller/Container").GetComponentsInChildren<FinalPanelItem>(); + // for (int i = 0; i < allItems.Length; i++) + // { + // allItems[i].SetPos(); + // } + + yield return new WaitForEndOfFrame(); + scrollerCanvasGroup.alpha = 1; + // for (int i = 0; i < allItems.Length; i++) + // { + // allItems[i].PlayDoTween(0.1f); + // yield return new WaitForSeconds(0.1f); + // } + for (int i = 0; i < 8; i++) + { + allItemLis[i].PlayDoTween(0.1f); + yield return new WaitForSeconds(0.07f); + } + image_HScore.SetActive(true); + + yield break; + } + + /// <summary> + /// 文字显示结束,显示波次和是否最高记录 + /// </summary> + protected void TextDoTweenFinish() + { + waveText.gameObject.SetActive(true); + if (isNewH) + { + image_NewRecord.SetActive(true); + } + + if (playEffectAC != null) + { + playEffectAC(); + } + + closeBtn.interactable = true; + } + + Transform tsLight; + /// <summary> + /// 光出现后开始旋转 + /// </summary> + protected void RotateLight() + { + isRotate = true; + offect = 0; + //Transform ImageLight = transform.Find("ImageLight"); + //ImageLight.DORotate(new Vector3(0, 180, 0), 1.0f).SetLoops(-1,LoopType.Incremental); + } + + List<FinalPanelItem> allItemLis;//新生成的排行榜 + /// <summary> + /// 生成假排行榜 + /// </summary> + /// <param name="hScore">自身分数</param> private void LoadLargeData(int hScore) { - _data = new SmallList<FinalPanelItemData>(); + //scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>(); + Transform content = transform.Find("Scroll View/Viewport/Content"); + + //scroller.Delegate = this; + _data = new List<FinalPanelItemData>(); FinalPanelItemData data; int score = 101; + GameObject go; + FinalPanelItem tmpData; + allItemLis = new List<FinalPanelItem>(); for (var i = 0; i < 100; i++) { + go = Instantiate(cellViewPrefab.gameObject, content); + tmpData = go.GetComponent<FinalPanelItem>(); + allItemLis.Add(tmpData); data = new FinalPanelItemData(); data.score = score - i; data.index = i + 1; @@ -85,8 +252,19 @@ _data[2].spriteIcon = rank_icon_2; _data[2].spriteBackGround = rank_di_2; + // tell the scroller to reload now that we have the data - scroller.ReloadData(); + //scroller.ReloadData(); + for (int i = 0; i < allItemLis.Count; i++) + { + allItemLis[i].SetData(_data[i]); + } + + for (int i = 0; i < 8; i++) + { + allItemLis[i].SetPos(); + } + } #region EnhancedScroller Handlers -- Gitblit v1.9.1