From ed63aa36ced400b4eef79862e85498213ae40c4a Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 19 十二月 2025 16:43:55 +0800
Subject: [PATCH] 0312 满星蓝卡提醒可遣散
---
Main/System/Tip/ScrollTipWin.cs | 72 +++++++++++++++++++++++++----------
1 files changed, 51 insertions(+), 21 deletions(-)
diff --git a/Main/System/Tip/ScrollTipWin.cs b/Main/System/Tip/ScrollTipWin.cs
index e99ffe1..709758d 100644
--- a/Main/System/Tip/ScrollTipWin.cs
+++ b/Main/System/Tip/ScrollTipWin.cs
@@ -1,11 +1,12 @@
-锘�//--------------------------------------------------------
-// [Author]: 绗簩涓栫晫
+//--------------------------------------------------------
+// [Author]: 鐜╀釜娓告垙
// [ Date ]: Saturday, October 07, 2017
//--------------------------------------------------------
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,19 +99,16 @@
if (ScrollTip.m_ActiveTips.Count >= tipDisplayCnt)
{
ScrollTip.Release(ScrollTip.m_ActiveTips[0], false);
- }
- if (ScrollTip.m_ActiveTips.Count >= tipDisplayCnt)
- {
ScrollTip.tipMoveTime = Time.deltaTime;
}
else
{
ScrollTip.tipMoveTime = m_TipMoveTime;
}
- for (int i = 0; i < ScrollTip.m_ActiveTips.Count; i++)
- {
- ScrollTip.m_ActiveTips[i].Play(ScrollTip.ScrollTipState.Move);
- }
+ // for (int i = 0; i < ScrollTip.m_ActiveTips.Count; i++)
+ // {
+ // ScrollTip.m_ActiveTips[i].Play(ScrollTip.ScrollTipState.Move);
+ // }
ScrollTipDetail tipDetail = ScrollTip.Request();
if (tipDetail != null)
{
@@ -91,20 +121,20 @@
var _hint = ScrollTip.m_Hints[0];
ScrollTip.m_Hints.RemoveAt(0);
tipDetail.ShowTip(_hint);
- tipDetail.Play(ScrollTip.ScrollTipState.Idle);
+ tipDetail.Play(ScrollTip.ScrollTipState.Move);
}
}
}
private bool IsCanAdd()
{
- for (int i = 0; i < ScrollTip.m_ActiveTips.Count; i++)
- {
- if (ScrollTip.m_ActiveTips[i].presentState == ScrollTip.ScrollTipState.Move)
- {
- return false;
- }
- }
+ // for (int i = 0; i < ScrollTip.m_ActiveTips.Count; i++)
+ // {
+ // if (ScrollTip.m_ActiveTips[i].presentState == ScrollTip.ScrollTipState.Move)
+ // {
+ // return false;
+ // }
+ // }
return true;
}
}
--
Gitblit v1.8.0