From 68f3da2cc3b2435ceacb7ced5d0107c10ee2b361 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Wed, 11 Nov 2020 15:39:47 +0800
Subject: [PATCH] 塔充能条BUG

---
 Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs                   |   31 +++++++++++++++
 Assets/Scripts/TowerDefense/Towers/Tower.cs                               |   46 +++++++++++++++++++++-
 Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs |   12 +++++-
 3 files changed, 83 insertions(+), 6 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs b/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
index dbbdd68..8a02c3d 100644
--- a/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
+++ b/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
@@ -250,7 +250,7 @@
         }
 
         TowerLevel myTower;
-
+        bool fireState = false;
         protected void updateTowerSkillData()
         {
             // 
@@ -283,6 +283,7 @@
                     towerPtr.energyCtl.SetEnergyProcessFloat(process);
                     if (proint == 10)
                     {
+                        fireState = true;
                         fInEnergy = 5.0f;
                         myTower.SetFireMatSpeed(true);//设置了火宝石快速攻击
                         // 设置多倍攻击速度
@@ -300,6 +301,7 @@
                     {
                         myTower.SetFireMatSpeed(false);//恢复了火宝石攻击速度
 
+                        fireState = false;
                         EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.FireTowerChargeEnd);
                         fInEnergy = 0.0f;
                         this.energyCalTime = 0.0f;
@@ -317,6 +319,33 @@
         }
 
         /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        void OnEnable()
+        {
+            if (towerPtr && towerPtr.energyCtl)
+            {
+                if (fireState)
+                {
+                    myTower.SetFireMatSpeed(true);//设置了火宝石快速攻击
+
+                    towerPtr.PlayEnergyEffect(true);
+                }
+            }
+        }
+
+        /// <summary>
+        /// This function is called when the behaviour becomes disabled or inactive.
+        /// </summary>
+        void OnDisable()
+        {
+            if (towerPtr && towerPtr.energyCtl)
+            {
+                towerPtr.PlayEnergyEffect(false, false);
+            }
+        }
+
+        /// <summary>
         /// Update the timers
         /// </summary>
         protected virtual void Update()
diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
index 5d9a3bf..e3d97ef 100644
--- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
+++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -826,9 +826,17 @@
             if (!arrTowerEnergyEffect[x, dy]) return;
 
             if (play)
+            {
+                if (!arrTowerEnergyEffect[x, dy].gameObject.activeSelf)
+                    arrTowerEnergyEffect[x, dy].gameObject.SetActive(true);
                 arrTowerEnergyEffect[x, dy].Play();
+            }
             else
+            {
+
                 arrTowerEnergyEffect[x, dy].Stop();
+                arrTowerEnergyEffect[x, dy].gameObject.SetActive(false);
+            }
         }
 
         /// <summary>
@@ -851,8 +859,8 @@
         {
             PlacementTile tileToUse;
 #if UNITY_STANDALONE
-			//tileToUse = placementTilePrefab;
-			tileToUse = placementTilePrefabMobile;
+            //tileToUse = placementTilePrefab;
+            tileToUse = placementTilePrefabMobile;
 #else
             tileToUse = placementTilePrefabMobile;
 #endif
diff --git a/Assets/Scripts/TowerDefense/Towers/Tower.cs b/Assets/Scripts/TowerDefense/Towers/Tower.cs
index 210f687..60df6b7 100644
--- a/Assets/Scripts/TowerDefense/Towers/Tower.cs
+++ b/Assets/Scripts/TowerDefense/Towers/Tower.cs
@@ -193,10 +193,13 @@
         /// 播放充能状态特效.
         /// </summary>
         /// <param name="play"></param>
-        public void PlayEnergyEffect(bool play)
+        public void PlayEnergyEffect(bool play, bool isClose = true)
         {
-            if (this.energyCtl)
+            if (this.energyCtl && isClose)
                 energyCtl.gameObject.SetActive(!play);
+            else if(!isClose){
+
+            }
 
             if (!opponentSide)
             {
@@ -365,6 +368,42 @@
         }
 
         /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        void OnEnable()
+        {
+
+            // if (bulletCtl != null)
+            // {
+            //     Debug.Log("打开了bulletCtl");
+            //     bulletCtl.gameObject.SetActive(true);
+            // }
+
+
+            // if (energyCtl != null)
+            // {
+            //     Debug.Log("打开了energyCtl");
+            //     energyCtl.gameObject.SetActive(true);
+            // }
+        }
+
+        /// <summary>
+        /// This function is called when the behaviour becomes disabled or inactive.
+        /// </summary>
+        void OnDisable()
+        {
+            if (bulletCtl != null)
+            {
+                bulletCtl.gameObject.SetActive(false);
+            }
+
+            if (energyCtl != null)
+            {
+                energyCtl.gameObject.SetActive(false);
+            }
+        }
+
+        /// <summary>
         /// 初始化当前塔防的局内升级,lvl从1开始.
         /// </summary>
         /// <param name="lvl"></param>
@@ -515,7 +554,8 @@
             StartCoroutine(ResetScale());
         }
 
-        IEnumerator ResetScale(){
+        IEnumerator ResetScale()
+        {
             yield return new WaitForSeconds(0.2f);
             if (gridPosition.y > 1)
             {

--
Gitblit v1.9.1