From 8d8722604524e5eaaf92753949d6d4c7800ea8ee Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 16 九月 2025 14:32:10 +0800
Subject: [PATCH] 125 特效持续播放问题解决

---
 Main/Component/UI/Effect/BattleEffectPlayer.cs |   47 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index f9f4f4e..703ed32 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -66,6 +66,10 @@
 
     public Action onComplete;
 
+    private bool isPlaying = false;
+
+    private float timer = 0f;
+
     protected virtual void OnEnable()
     {
         if (spineComp != null)
@@ -212,15 +216,34 @@
             this.gameObject.SetActive(true);
         }
 
-        if (effectConfig.autoDestroy != 0)
-        {
-            GameObject.Destroy(gameObject, effectConfig.destroyDelay / speedRate);
-        }
-
+        isPlaying = true;
+        timer = 0f;
 
         PlayEffect();
+    }
 
 
+
+    public void Run()
+    {
+        if (null == effectConfig)
+        {
+            return;
+        }
+
+        if (!isPlaying)
+        {
+            return;
+        }
+
+        if (effectConfig.autoDestroy != 0)
+        {
+            timer += Time.deltaTime * speedRate;
+            if (timer >= effectConfig.destroyDelay)
+            {
+                GameObject.DestroyImmediate(gameObject);
+            }
+        }
     }
 
     protected virtual void PlayEffect()
@@ -451,7 +474,7 @@
 
     public void Pause()
     {
-        if (effectTarget == null) return;
+        // if (effectTarget == null) return;
 
         // Spine鍔ㄧ敾
         // var spineGraphics = effectTarget.GetComponentsInChildren<SkeletonGraphic>(true);
@@ -459,6 +482,11 @@
         if (spineComp != null)
         {
             spineComp.timeScale = 0f;
+        }
+
+        if (spineAnimationState != null)
+        {
+            spineAnimationState.TimeScale = 0f;
         }
 
         // Animator鍔ㄧ敾
@@ -476,13 +504,18 @@
 
     public void Resume()
     {
-        if (effectTarget == null) return;
+        // if (effectTarget == null) return;
 
         if (spineComp != null)
         {
             spineComp.timeScale = speedRate;
         }
 
+        if (spineAnimationState != null)
+        {
+            spineAnimationState.TimeScale = speedRate;
+        }
+
         // Animator鍔ㄧ敾
         foreach (var animator in animatorList)
         {

--
Gitblit v1.8.0