地图系统
This commit is contained in:
@@ -15,13 +15,14 @@ namespace BaseGames.World.Map
|
||||
/// 颜色通过 <see cref="SetColors"/> 从外部注入,不在此处硬编码。
|
||||
/// <para><see cref="RT"/> 属性在 Awake 中缓存,避免调用方反复 GetComponent。</para>
|
||||
/// </summary>
|
||||
public class MapRoomCellUI : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
||||
public class MapRoomCellUI : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
|
||||
{
|
||||
[SerializeField] private Image _bg;
|
||||
[SerializeField] private Image _icon;
|
||||
[SerializeField] private RawImage _outlineImage; // 可选:房间非矩形轮廓纹理
|
||||
[SerializeField] private Image _highlight; // 可选:当前房间高亮描边(玩家所在时激活)
|
||||
[SerializeField] private Image _fogOverlay; // 可选:未知房间雾效覆盖层(R12-FD)
|
||||
[SerializeField] private Image _teleportMarker;// 可选:可传送站点标记(CanTeleportTo 为真时激活)
|
||||
|
||||
// 实例颜色(默认值与原硬编码保持一致);可通过 SetColors 统一覆盖
|
||||
private Color _colExplored = Color.white;
|
||||
@@ -30,8 +31,10 @@ namespace BaseGames.World.Map
|
||||
private RoomVisibility _currentVisibility;
|
||||
|
||||
private string _displayName;
|
||||
private string _roomId; // 供点击回调携带(传送选择)
|
||||
private Action<string> _onHover;
|
||||
private Action _onHoverExit;
|
||||
private Action<string> _onClick; // 点击回调(传送选择),由 MapPanel 注入
|
||||
|
||||
/// <summary>格子的 RectTransform(Awake 中缓存,外部直接访问无需 GetComponent)。</summary>
|
||||
public RectTransform RT { get; private set; }
|
||||
@@ -47,6 +50,7 @@ namespace BaseGames.World.Map
|
||||
Action<string> onHover = null, Action onHoverExit = null)
|
||||
{
|
||||
_displayName = room.DisplayName;
|
||||
_roomId = room.RoomId;
|
||||
_onHover = onHover;
|
||||
_onHoverExit = onHoverExit;
|
||||
|
||||
@@ -113,6 +117,15 @@ namespace BaseGames.World.Map
|
||||
if (_highlight != null) _highlight.enabled = v;
|
||||
}
|
||||
|
||||
/// <summary>注入点击回调(携带 RoomId),由 MapPanel 在创建格子时设置;MinimapHUD 不设置即不可点击。</summary>
|
||||
public void SetClickHandler(Action<string> onClick) => _onClick = onClick;
|
||||
|
||||
/// <summary>设置"可传送站点"标记显隐(CanTeleportTo 为真时由 MapPanel 调用)。</summary>
|
||||
public void SetTeleportable(bool v)
|
||||
{
|
||||
if (_teleportMarker != null) _teleportMarker.enabled = v;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新发现房间时播放闪白淡出动画(R12-FC)。
|
||||
/// 由 MapPanel.OnRoomMappedAnim 调用;协程安全:组件被销毁后 Unity 自动终止。
|
||||
@@ -138,5 +151,8 @@ namespace BaseGames.World.Map
|
||||
}
|
||||
|
||||
public void OnPointerExit(PointerEventData _) => _onHoverExit?.Invoke();
|
||||
|
||||
/// <summary>点击格子:转发 RoomId 给注入的回调(MapPanel 据 CanTeleportTo 决定是否发起传送选择)。</summary>
|
||||
public void OnPointerClick(PointerEventData _) => _onClick?.Invoke(_roomId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user