From f189918c90c0ab4090fe9cf2736a2b529317e0c7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 05 十二月 2025 20:27:58 +0800
Subject: [PATCH] 0312 消息提示增加间隔播放

---
 Main/System/Tip/ScrollTipWin.cs |   46 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/Main/System/Tip/ScrollTipWin.cs b/Main/System/Tip/ScrollTipWin.cs
index b38f64a..709758d 100644
--- a/Main/System/Tip/ScrollTipWin.cs
+++ b/Main/System/Tip/ScrollTipWin.cs
@@ -1,4 +1,4 @@
-锘�//--------------------------------------------------------
+//--------------------------------------------------------
 //    [Author]:           鐜╀釜娓告垙
 //    [  Date ]:           Saturday, October 07, 2017
 //--------------------------------------------------------
@@ -6,6 +6,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -26,6 +27,8 @@
     float m_TipMoveTime = 0.2f;
     [SerializeField, Header("闅愯棌鏃堕棿")]
     float m_TipHideTime = 0.5f;
+    
+    bool isLoopRunning = false;
 
     protected override void InitComponent()
     {
@@ -44,18 +47,48 @@
 
     protected override void OnPreClose()
     {
-        ScrollTip.OnTipReceiveEvent -= OnTipReceiveEvent;
+        ScrollTip.OnTipReceiveEvent -= OnAddTipEvent;
         ScrollTip.ReleaseAll();
     }
 
     protected override void OnPreOpen()
     {
         ScrollTip.tipMoveTime = m_TipMoveTime;
-        ScrollTip.OnTipReceiveEvent += OnTipReceiveEvent;
+        ScrollTip.OnTipReceiveEvent += OnAddTipEvent;
         mask.sizeDelta = mask.sizeDelta.SetY(tipDisplayCnt * m_TipHeight + (tipDisplayCnt - 1) * (m_TipDistance - m_TipHeight) + 10);
-        for (int i = 0; i < ScrollTip.m_Hints.Count; i++)
+        
+        // 濡傛灉鏈夊緟澶勭悊鐨勬彁绀猴紝绔嬪嵆鍚姩寰幆
+        if (ScrollTip.m_Hints.Count > 0)
         {
-            OnTipReceiveEvent();
+            LoopTipReceiveEvent().Forget();
+        }
+    }
+
+    async UniTask LoopTipReceiveEvent()
+    {
+        if (isLoopRunning) return; // 闃叉閲嶅鍚姩
+        
+        isLoopRunning = true;
+        try
+        {
+            while (ScrollTip.m_Hints.Count > 0)
+            {
+                OnTipReceiveEvent();
+                await UniTask.Delay(100);
+            }
+        }
+        finally
+        {
+            isLoopRunning = false;
+        }
+    }
+
+    void OnAddTipEvent()
+    {
+        // 鍙湁鍦ㄦ病鏈夊惊鐜繍琛屾椂鎵嶅惎鍔ㄦ柊鐨勫惊鐜�
+        if (!isLoopRunning)
+        {
+            LoopTipReceiveEvent().Forget();
         }
     }
 
@@ -66,9 +99,6 @@
             if (ScrollTip.m_ActiveTips.Count >= tipDisplayCnt)
             {
                 ScrollTip.Release(ScrollTip.m_ActiveTips[0], false);
-            }
-            if (ScrollTip.m_ActiveTips.Count >= tipDisplayCnt)
-            {
                 ScrollTip.tipMoveTime = Time.deltaTime;
             }
             else

--
Gitblit v1.8.0