From d185e655cd926e45ed7f7ce3f59af7dc23b4c372 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Tue, 22 Dec 2020 09:53:07 +0800 Subject: [PATCH] Merge branch 'master' of http://47.95.218.140:8090/r/GemBattle into master --- Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 98 insertions(+), 1 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs index c0f0447..f45903b 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs @@ -1,7 +1,10 @@ using Core.Economy; +using KTGMGemClient; using TMPro; using TowerDefense.Level; using UnityEngine; +using DG.Tweening; +using Core.Utilities; namespace TowerDefense.UI.HUD { @@ -17,8 +20,27 @@ protected Currency currency; + private ParticleSystem goldGetPs;//金币获得动画 + + /// <summary> + /// 每秒增加的金币数量 + /// </summary> + private int addCurrencyPerSecond; + + private float duration; + + /// <summary> + /// 一秒前金币 + /// </summary> + private int lastCurrency; + + [SerializeField] + private GameObject addCurrencyPrefab; + private void Start() { + goldGetPs = transform.Find("CurrencyImage/Effect_UI_JinBi_HuoDe/Particle System (6)").GetComponent<ParticleSystem>(); + if (EndlessLevelManager.instanceExists) { currency = EndlessLevelManager.instance.Currency; @@ -28,6 +50,8 @@ } else Debug.LogError("[UI] No EndlessLevelManager to get currency from"); + + EventCenter.Ins.Add((int)KTGMGemClient.EventType.PlayGetGoldPS, PlayGetGoldPS); } /// <summary> @@ -45,7 +69,34 @@ protected void UpdateDisplay() { int current = currency.currentCurrency; - DisplayText.text = AddNumberSemi(current.ToString()); + int lastCurrency = currency.lastCurrency; + DisplayText.text = current.ToString(); + + if (lastCurrency > 0 && current - lastCurrency > 0) + ToBig().OnComplete(ToSmall); + } + + private Tweener ToBig() + { + return DOTween.To( + () => DisplayText.transform.localScale, + (Vector3 v) => DisplayText.transform.localScale = v, + new Vector3(1.15f, 1.15f, 1.15f), + 0.15f); + } + + private void ToSmall() + { + DOTween.To( + () => DisplayText.transform.localScale, + (Vector3 v) => DisplayText.transform.localScale = v, + new Vector3(1f, 1f, 1f), + 0.1f); + } + + public void PlayGetGoldPS() + { + goldGetPs.Play(); } /// <summary> @@ -61,5 +112,51 @@ } return str; } + + private void Update() + { + FloatAddCurrency(); + } + + /// <summary> + /// 飘1s内增加的金币 + /// </summary> + private void FloatAddCurrency() + { + if (duration <= 0.0001f) + { + lastCurrency = currency.currentCurrency; + } + + duration += Time.deltaTime; + + if (duration >= 1f) + { + int add = currency.currentCurrency - lastCurrency; + + if (add > 0) + { + GameObject obj = Instantiate(addCurrencyPrefab); + obj.transform.SetParent(GameObject.Find("UICamera/BottomCanvas/Panel/Bottom/CurrencyContainer").transform, false); + obj.transform.localPosition = new Vector3(148f, -30f, 0f); + obj.transform.localScale = new Vector3(0.66f, 0.66f, 0.66f); + TextMeshProUGUI textMeshProUGUI = obj.GetComponent<TextMeshProUGUI>(); + textMeshProUGUI.text = $"+{add}"; + + DOTween.To( + () => obj.transform.localPosition.y, + (float v) => + { + Vector3 pos = obj.transform.localPosition; + pos.y = v; + obj.transform.localPosition = pos; + }, + -20f, 0.2f); + Destroy(obj, 0.5f); + } + + duration = 0f; + } + } } } \ No newline at end of file -- Gitblit v1.9.1