From 94bfa9aa292bd875483fb53dc5d35c468893cb86 Mon Sep 17 00:00:00 2001
From: GeWuYou <95328647+GeWuYou@users.noreply.github.com>
Date: Sun, 8 Feb 2026 14:27:12 +0800
Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E4=BC=98=E5=8C=96UI=E5=AE=9E?=
=?UTF-8?q?=E4=BE=8BID=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91=E4=BB=A5?=
=?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E7=BA=BF=E7=A8=8B=E5=AE=89=E5=85=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 使用Interlocked.Increment确保多线程环境下实例计数器的原子操作
- 修复了潜在的并发访问导致ID重复的问题
- 保持原有的ID格式化规则不变
- 为GenerateInstanceId方法添加返回值XML文档注释
---
GFramework.Game/ui/UiRouterBase.cs | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/GFramework.Game/ui/UiRouterBase.cs b/GFramework.Game/ui/UiRouterBase.cs
index 04fa8ff..6c0b794 100644
--- a/GFramework.Game/ui/UiRouterBase.cs
+++ b/GFramework.Game/ui/UiRouterBase.cs
@@ -457,9 +457,13 @@ public abstract class UiRouterBase : AbstractSystem, IUiRouter
///
/// 生成唯一实例ID
///
+ /// 格式为"ui_000001"的唯一实例标识符
private string GenerateInstanceId()
{
- return $"ui_{++_instanceCounter:D6}";
+ // 原子操作递增实例计数器,确保多线程环境下的唯一性
+ var id = Interlocked.Increment(ref _instanceCounter);
+ // 返回格式化的实例ID字符串
+ return $"ui_{id:D6}";
}
///