UI系统优化

This commit is contained in:
2026-05-25 11:54:37 +08:00
parent c7057db27d
commit 3c812cfb41
130 changed files with 4738 additions and 477 deletions

View File

@@ -56,10 +56,13 @@ namespace BaseGames.World.Map
private List<Image> _pinImages = new();
private List<Image> _exitImages = new();
private string _highlightedRoomId;
private IMapService _mapSvc; // 面板活跃期间缓存,避免高频 ServiceLocator 查询
private readonly CompositeDisposable _subs = new();
private void OnEnable()
{
_mapSvc = ServiceLocator.GetOrDefault<IMapService>();
// 首次打开时建立格子;后续打开只刷新探索状态,跳过重复 Instantiate
if (_cells.Count == 0)
BuildGrid();
@@ -75,6 +78,7 @@ namespace BaseGames.World.Map
private void OnDisable()
{
_subs.Clear();
_mapSvc = null;
HideTooltip();
}
@@ -95,11 +99,10 @@ namespace BaseGames.World.Map
// 面板重新打开时同步关闭期间积累的探索进度
private void RefreshAllCells()
{
var svc = ServiceLocator.GetOrDefault<IMapService>();
foreach (var (roomId, cell) in _cells)
{
if (cell == null) continue;
cell.SetVisibility(GetVisibility(svc, roomId));
cell.SetVisibility(GetVisibility(_mapSvc, roomId));
}
}
@@ -108,12 +111,11 @@ namespace BaseGames.World.Map
private void BuildGrid()
{
if (_database?.AllRooms == null) return;
var svc = ServiceLocator.GetOrDefault<IMapService>();
foreach (var room in _database.AllRooms)
{
if (room == null) continue;
var cell = Instantiate(_cellPrefab, _roomContainer);
cell.Setup(room, GetVisibility(svc, room.RoomId), ChooseIcon(room),
cell.Setup(room, GetVisibility(_mapSvc, room.RoomId), ChooseIcon(room),
ShowTooltip, HideTooltip);
_cells[room.RoomId] = cell;
}
@@ -149,9 +151,8 @@ namespace BaseGames.World.Map
private void OnMapUpdated(string roomId)
{
var svc = ServiceLocator.GetOrDefault<IMapService>();
if (_cells.TryGetValue(roomId, out var cell))
cell.SetVisibility(GetVisibility(svc, roomId));
cell.SetVisibility(GetVisibility(_mapSvc, roomId));
}
// ── 玩家位置图标 ──────────────────────────────────────────────────────