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