fix: 修复UI更新集合修改异常与WiFi环境校验问题,调整登录页布局

1. 修复pendingUIUpdates遍历时的集合修改异常,通过快照方式处理
2. 增加WiFi环境校验,仅WiFi在线时拉取云端配置
3. 批量调整登录页预制体的UI布局参数
This commit is contained in:
“虞渠成” 2026-09-20 11:07:56 +08:00
parent f7e7c9fcbd
commit 5791de31f1
2 changed files with 43 additions and 39 deletions

View File

@ -1213,10 +1213,10 @@ RectTransform:
- {fileID: 684666579658391183}
m_Father: {fileID: 1639875081832707489}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -666}
m_SizeDelta: {x: 690, y: 90}
m_SizeDelta: {x: -60, y: 90}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &5465190201275647075
CanvasRenderer:
@ -2727,7 +2727,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -16.5}
m_AnchoredPosition: {x: 0, y: -16.452919}
m_SizeDelta: {x: 32, y: 32}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &2921788503276695093
@ -5390,9 +5390,9 @@ RectTransform:
m_Father: {fileID: 2422096111024029999}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 345, y: -45}
m_SizeDelta: {x: 690, y: 90}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -45}
m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3065496157279089340
CanvasRenderer:
@ -7986,8 +7986,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 345, y: -16.5}
m_SizeDelta: {x: 690, y: 33}
m_AnchoredPosition: {x: 425.84265, y: -16.452919}
m_SizeDelta: {x: 851.6853, y: 32.905838}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5884218254345197256
CanvasRenderer:
@ -8426,10 +8426,10 @@ RectTransform:
- {fileID: 44562984798115352}
m_Father: {fileID: 1639875081832707489}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -502}
m_SizeDelta: {x: 702, y: 112}
m_SizeDelta: {x: -60, y: 112}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &6483314700030402381
CanvasRenderer:
@ -8571,9 +8571,9 @@ RectTransform:
m_Father: {fileID: 2422096111024029999}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 345, y: -45}
m_SizeDelta: {x: 690, y: 90}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -45}
m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5996576350329013511
CanvasRenderer:
@ -8845,8 +8845,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 680, y: -41}
m_SizeDelta: {x: 335, y: 62}
m_AnchoredPosition: {x: 841.6853, y: -41}
m_SizeDelta: {x: 415.84265, y: 62}
m_Pivot: {x: 1, y: 0.5}
--- !u!222 &8365369779441904015
CanvasRenderer:
@ -9575,7 +9575,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -16.5}
m_AnchoredPosition: {x: 0, y: -16.452919}
m_SizeDelta: {x: 32, y: 32}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &4576051275392203378
@ -9858,8 +9858,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 229, y: -16.5}
m_SizeDelta: {x: 374, y: 33}
m_AnchoredPosition: {x: 222.98212, y: -16.452919}
m_SizeDelta: {x: 361.96423, y: 32.905838}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4796546782487776879
CanvasRenderer:
@ -10029,8 +10029,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 114, y: -16.5}
m_SizeDelta: {x: 144, y: 33}
m_AnchoredPosition: {x: 111.68295, y: -16.452919}
m_SizeDelta: {x: 139.3659, y: 32.905838}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8476361296566485515
CanvasRenderer:
@ -10123,7 +10123,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 10, y: -41}
m_SizeDelta: {x: 335, y: 62}
m_SizeDelta: {x: 415.84265, y: 62}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &3290300190119161819
CanvasRenderer:
@ -10197,7 +10197,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 237, y: 0}
m_AnchoredPosition: {x: 236.14778, y: 0}
m_SizeDelta: {x: 0, y: 40}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &5170872477376297604
@ -10465,8 +10465,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 345, y: -74.5}
m_SizeDelta: {x: 690, y: 33}
m_AnchoredPosition: {x: 425.84265, y: -74.35876}
m_SizeDelta: {x: 851.6853, y: 32.905838}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5787027134745446057
CanvasRenderer:
@ -12777,8 +12777,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 118.5, y: 0}
m_SizeDelta: {x: 237, y: 40}
m_AnchoredPosition: {x: 118.07389, y: 0}
m_SizeDelta: {x: 236.14778, y: 40}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &737449055011416443
CanvasRenderer:
@ -14070,7 +14070,7 @@ PrefabInstance:
- target: {fileID: 813754382663813515, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 180
value: 220.42133
objectReference: {fileID: 0}
- target: {fileID: 813754382663813515, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
@ -14200,7 +14200,7 @@ PrefabInstance:
- target: {fileID: 3483140798420058103, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 660
value: 808.21155
objectReference: {fileID: 0}
- target: {fileID: 3483140798420058103, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
@ -14240,7 +14240,7 @@ PrefabInstance:
- target: {fileID: 4243489019740776461, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 420
value: 514.3164
objectReference: {fileID: 0}
- target: {fileID: 4243489019740776461, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
@ -14270,7 +14270,7 @@ PrefabInstance:
- target: {fileID: 5540398808809424609, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 60
value: 73.47378
objectReference: {fileID: 0}
- target: {fileID: 5540398808809424609, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
@ -14300,7 +14300,7 @@ PrefabInstance:
- target: {fileID: 7167160133371796444, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 540
value: 661.264
objectReference: {fileID: 0}
- target: {fileID: 7167160133371796444, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
@ -14330,7 +14330,7 @@ PrefabInstance:
- target: {fileID: 8961243184128173635, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 300
value: 367.3689
objectReference: {fileID: 0}
- target: {fileID: 8961243184128173635, guid: 572e01c47cf5e0a4fb95a7ff1282e041,
type: 3}

View File

@ -1375,14 +1375,15 @@ namespace Kill.UI.Pages
void Update()
{
// 执行所有挂起的UI更新
// 执行所有挂起的UI更新:先取出快照再遍历,避免回调中再次 Add/Remove 触发"集合在枚举中被修改"异常
if (pendingUIUpdates.Count > 0)
{
foreach (var update in pendingUIUpdates)
{
update?.Invoke();
}
var snapshot = pendingUIUpdates.ToArray();
pendingUIUpdates.Clear();
for (int i = 0; i < snapshot.Length; i++)
{
snapshot[i]?.Invoke();
}
}
}
@ -2189,6 +2190,9 @@ namespace Kill.UI.Pages
});
}
// 只有WiFi在线时才拉取云端配置和定时任务云端接口仅WiFi设备可用蓝牙设备不走云端
if (!hasWifi) continue;
// 在线状态处理后拉取一次设备配置与云端快照比对有变化则刷新主页UI
// 快照用独立的 _lastCloudConfigSnapshot不能用 DataManager.deviceConfig
// BLE 拉取结果会回写 deviceConfig如工作模式/锁定状态),若快照被污染,