This commit is contained in:
2026-10-08 04:09:31 +08:00
parent a76396b753
commit b8d546a374
2 changed files with 43 additions and 8 deletions
@@ -56,9 +56,39 @@ public class GuaGuaLeGPU : SubUIBase, IPointerDownHandler, IDragHandler
private Texture2D progressReadTex;
private int dragCount;
/// <summary>
/// 刮刮卡面板打开期间,挂起 WebSocket 推送(AssetUpdated/BackpackUpdated)触发的用户数据刷新,
/// 统一在点击"领取"按钮时才刷新用户数据(加金币/钻石/道具)。
/// </summary>
public static bool SuspendWsRefresh;
public override void Awake()
{
base.Awake();
// 领取按钮:刮完后最后一步点击领取时,才刷新用户数据(金币/钻石/道具/刮刮卡数量)
if (btn_Get != null)
btn_Get.onClick.AddListener(OnGetClick);
}
private void OnGetClick()
{
SuspendWsRefresh = false;
string userId = GameManager.Instance?.user?.id;
if (!string.IsNullOrEmpty(userId))
APIRequestList.GetUser(userId, a => GameManager.Instance.UpdataUserData(a));
}
public override void Hide()
{
SuspendWsRefresh = false;
base.Hide();
}
protected override void OnShow(object args = null)
{
base.OnShow(args);
// 打开面板即挂起 WebSocket 推送刷新,数据统一在点击"领取"时更新
SuspendWsRefresh = true;
ResetCard();
}
@@ -93,7 +123,8 @@ public class GuaGuaLeGPU : SubUIBase, IPointerDownHandler, IDragHandler
progressReadTex = new Texture2D(rtWidth, rtHeight, TextureFormat.ARGB32, false);
ResetState();
// 不在打开时抽奖:刮刮卡在刮开(RevealAll)时才消耗并更新数据
// 打开时即抽奖出结果:提前创建奖品显示(涂层下面),加数据统一在最后点击"领取"按钮时进行
FetchAward();
}
private void ResetState()
@@ -137,10 +168,7 @@ public class GuaGuaLeGPU : SubUIBase, IPointerDownHandler, IDragHandler
break;
}
// 抽奖完成后刷新用户数据(金币/钻石/刮刮卡数量变化)
string userId = GameManager.Instance?.user?.id;
if (!string.IsNullOrEmpty(userId))
APIRequestList.GetUser(userId, a => GameManager.Instance.UpdataUserData(a));
// 不在此处刷新用户数据:加金币/钻石/道具统一在最后点击"领取"按钮时进行
});
}
@@ -158,6 +186,9 @@ public class GuaGuaLeGPU : SubUIBase, IPointerDownHandler, IDragHandler
if (instanceMaskMat != null)
instanceMaskMat.SetColor("_CoatColor", coatColor);
// 重置后重新抽奖:提前创建新的奖品显示
FetchAward();
}
public void RevealAll()
@@ -169,9 +200,7 @@ public class GuaGuaLeGPU : SubUIBase, IPointerDownHandler, IDragHandler
ClearRT(maskRT, Color.black);
// 刮完后才抽奖:消耗刮刮卡,并在抽奖回调中刷新金币/钻石/卡片数量
FetchAward();
// 刮开揭示时不刷新用户数据:加金币/钻石/道具统一在最后点击"领取"按钮时进行
onRevealed?.Invoke();
}
@@ -309,6 +338,8 @@ public class GuaGuaLeGPU : SubUIBase, IPointerDownHandler, IDragHandler
private void OnDestroy()
{
// 面板销毁时恢复 WebSocket 推送刷新,避免影响其他功能
SuspendWsRefresh = false;
if (maskRT != null) { maskRT.Release(); Destroy(maskRT); }
if (instanceMaskMat != null) Destroy(instanceMaskMat);
if (instanceEraseMat != null) Destroy(instanceEraseMat);