From fe59d1a97e80284315bcdfa18a49059b38dfd137 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Wed, 16 Dec 2020 14:28:09 +0800
Subject: [PATCH] 掉血修改

---
 Assets/Scripts/TowerDefense/UI/EndlessHomeBaseHPManager.cs |   70 ++++++++++++++++++++++++-----------
 1 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/UI/EndlessHomeBaseHPManager.cs b/Assets/Scripts/TowerDefense/UI/EndlessHomeBaseHPManager.cs
index 9fd6421..b2cc919 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessHomeBaseHPManager.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessHomeBaseHPManager.cs
@@ -5,6 +5,7 @@
 using TMPro;
 using DG.Tweening;
 using Core.Utilities;
+using System.Collections;
 
 /**
  * 无尽模式玩家基地血量管理器
@@ -41,6 +42,8 @@
         private Image heartImg;
 
         private Timer timer;
+        public ParticleSystem loseHeartPS;//心碎特效
+        private GameObject decreaseHeartObj;//掉血显示
 
         // Start is called before the first frame update
         private void Start()
@@ -78,29 +81,51 @@
                 EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessHeartAllLose);
         }
 
+
         /// <summary>
         /// 丢失爱心飘字
         /// </summary>
         /// <param name="count"></param>
         private void FloatLoseHeart(int count)
         {
-            GameObject prefab = Resources.Load<GameObject>("UI/DecreaseHeart");
-            GameObject obj = Instantiate(prefab);
-            obj.transform.SetParent(GameObject.Find("UICamera/BottomCanvas/Panel/Bottom/CurrencyContainer").transform, false);
-            obj.transform.localPosition = new Vector3(91.5f, 48.8f, 0f);
-            obj.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
-            TextMeshProUGUI textMeshProUGUI = obj.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
-            textMeshProUGUI.text = $"-{count}";
-            DOTween.To(
-                () => obj.transform.localPosition.y,
-                (float v) =>
-                {
-                    Vector3 pos = obj.transform.localPosition;
-                    pos.y = v;
-                    obj.transform.localPosition = pos;
+            TextMeshProUGUI textMeshProUGUI;
+            if (decreaseHeartObj != null)
+            {
+                textMeshProUGUI = decreaseHeartObj.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
+                textMeshProUGUI.text = int.Parse(textMeshProUGUI.text) - count + "";
+            }
+            else
+            {
+                GameObject prefab = Resources.Load<GameObject>("UI/DecreaseHeart");
+                GameObject obj = Instantiate(prefab);
+                obj.transform.SetParent(GameObject.Find("UICamera/BottomCanvas/Panel/Bottom/CurrencyContainer").transform, false);
+                obj.transform.localPosition = new Vector3(91.5f, 48.8f, 0f);
+                obj.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
 
-                }, 70.9f, 0.3f);
-            Destroy(obj, 0.6f);
+                decreaseHeartObj = obj;
+
+                textMeshProUGUI = obj.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
+                textMeshProUGUI.text = $"-{count}";
+                DOTween.To(
+                    () => obj.transform.localPosition.y,
+                    (float v) =>
+                    {
+                        Vector3 pos = obj.transform.localPosition;
+                        pos.y = v;
+                        obj.transform.localPosition = pos;
+
+                    }, 70.9f, 0.3f);
+                StartCoroutine(DestroyDecreaseHeart());
+            }
+
+            //Destroy(obj, 0.6f);
+        }
+
+        IEnumerator DestroyDecreaseHeart()
+        {
+            yield return new WaitForSeconds(0.6f);
+            Destroy(decreaseHeartObj);
+            decreaseHeartObj = null;
         }
 
         private void PlayLoseHeartEffect()
@@ -108,12 +133,13 @@
             if (!isPlayLoseHeartDone) return;
 
             heartImg.enabled = false;
-            GameObject obj = Instantiate(loseHeartPrefab);
-            obj.transform.SetParent(GameObject.Find("ParticleSystemObject").transform, false);
-            obj.transform.localPosition = new Vector3(-27.93f, 0f, -51.52f);
-            obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
-            ParticleSystem ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
-            ps?.Play();
+            // GameObject obj = Instantiate(loseHeartPrefab);
+            // obj.transform.SetParent(GameObject.Find("ParticleSystemObject").transform, false);
+            // obj.transform.localPosition = new Vector3(-27.93f, 0f, -51.52f);
+            // obj.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
+            // ParticleSystem ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
+
+            loseHeartPS?.Play();
             timer = new Timer(0.6f, SpawnHeart);
         }
 

--
Gitblit v1.9.1