Skip to content

界面总览

This content is not available in your language yet.

全游戏界面分为两套体系:屏幕面板(UI Toolkit,按七个槽位挂载,由 PanelManager.cs 统一调度)与世界空间标签(UGUI,跟随船员/建筑/船只的名牌、血条、气泡、飘字)。本页给出全部面板清单、打开/关闭方式、快捷键、世界 UI 行为规则,以及策划改文案/调数值的具体位置。

游戏 UI 按用途走三种技术栈(项目硬规则,见 .claude/CLAUDE.md):

用途 本页对应章节
UI Toolkit 屏幕面板:HUD、建造栏、各种弹窗 槽位框架、面板清单
UGUI(ScreenSpaceOverlay 跟随投影) 世界标签:船员名牌、建筑血条、气泡、飘字 世界空间 UI
IMGUI 开发者工具(不随游戏发布) 开发者工具

启动链路(UIBootstrap.cs):游戏场景加载前自动创建常驻根对象 UI.Root,内含两个 UI 文档层——主文档(sortingOrder=0,承载全部槽位)与 Modal 文档(sortingOrder=30,永远盖在主文档之上)。随后从 Resources/Panels/ 一次性实例化全部 17 个面板预制体(PanelRegistry.cs),各面板自注册到 PanelManager。场景内 UIBoot.cs 在启动时拉起 4 个默认界面:TimeBar(时间条)、VictoryHUD(胜利进度按钮)、NavMode(航行模式角标)、ModeBar(底部操作栏)。其余面板按事件/快捷键按需打开。

玩家在一局游戏中的典型接触顺序:开局即见左上角位置面板、右上角时间条、右下角小地图与船只状态、左侧船上物品栏、底部操作栏 → 按 B 开建造栏造建筑 → 点建筑弹容器悬浮窗 → 进港自动弹港口面板 → 点交易/招募/外交打开对应全屏弹窗。

所有 UI Toolkit 面板必须声明自己属于哪一层(PanelLayer.cs),各层挂载规则不同(PanelManager.cs):

槽位 挂载规则 屏幕位置 当前成员
Top 叠加(多面板共存) 顶部条带(高度固定屏幕 5%) TimeBar、VictoryHUD、NavMode
MainLeft 互斥(同时只挂一个,切换时卸旧挂新) 屏幕左列 (当前无成员,默认空)
MainRight 互斥 屏幕右列(底部自动预留小地图+船只状态的高度) Harbor
BottomContent 互斥 底部上段 BuildBar
BottomBar 永驻(挂上后不允许卸载、不允许换) 底部最下段 ModeBar
Modal 栈(可叠多层,后开的盖在先开的上面) 全屏覆盖,独立文档层 VictoryDetail、Confirm、Crafting、Diplomacy、MainMenu、RankChange、Recruitment、Trading、WorkPriority
Floating 叠加浮窗(不阻塞游戏操作,可拖动) 全屏覆盖层,z 序高于其它槽位、低于 Modal CrewManagement、CrewTree

关键联动规则:

  • Modal 打开 → 世界标签 UGUI 隐藏:任意 Modal 入栈时广播“有弹窗打开”信号;挂了 HideOnModal.cs 组件的 UGUI Canvas 整体隐藏,全部弹窗关闭后恢复。原因:ScreenSpaceOverlay Canvas 在 Unity 里永远渲染在 UI Toolkit 之上,不隐藏会穿透弹窗(PanelManager.cs 注释)。
  • 容器层全部透传点击:槽位容器自身不拦截鼠标,3D 世界事件可穿过空白区域;只有面板内声明可点的元素才拦截(UIBootstrap.cs)。
  • 统一的“鼠标是否在 UI 上”判定MouseUIGuard.cs 同时检查 UGUI 与 UI Toolkit 两栈,世界交互(建造、点击建筑、右键设航点)调用它防止穿透。

另有一批常驻面板不走槽位,直接挂在主文档根上(位置写死、永不被互斥顶掉):ShipInventory(船上物品)、ShipPerformance(船只状态)、MiniMap(小地图)、CurrentLocation(位置面板)、AutoHullSettings(自动船壳)、MenuButton(菜单按钮)、Toast 容器、Zone 提示容器、Respawn(沉船倒计时)、三个鼠标跟随悬浮窗(容器/船员/武器)。

按键 功能 出处
Tab 循环游戏速度(1x → 2x → 5x → 1x,不含暂停档) TimeBarPanel.cs
Space 暂停 / 恢复 TimeBarPanel.cs
B 开/关建造栏(BuildBar) ModeBarHotkeyPresenter.cs
V 开/关胜利条件详情弹窗 VictoryHUDPanel.cs
H 开/关工作优先级弹窗 WorkPriorityPresenter.cs
M 小地图 ↔ 全屏战略地图切换(与相机拉远联动) MiniMapPresenter.cs
N 手动 / 自动航行切换(点击 NavMode 角标等效) NavModePanel.cs
F 全速前进开关(自动航行中按 F 是中断信号) FullSpeedAheadController.cs
ESC 开/关游戏菜单(已在地图全屏时优先退出地图) MenuButtonPresenter.csZoomCamera.cs
右键(海面/小地图) 设自动航行目标点(替换式) WorldClickToTarget.csMiniMapPresenter.cs
Shift+右键 追加航点到航线末尾(RTS 排队式) 同上
Shift+F9 (仅开发版)预览沉船复活倒计时界面 RespawnPresenter.cs
左键点建筑 弹容器/生产悬浮窗 ContainerPopupManager.cs
左键点船员 弹船员详情悬浮窗 CrewPopupManager.cs
右键点有人武器 弹炮位分配悬浮窗 WeaponPopupManager.cs

输入框聚焦时(UGUI 输入框或 UI Toolkit 文本框)B/V 等快捷键被屏蔽,防止打字误触发(ModeBarHotkeyPresenter.csVictoryHUDPanel.cs)。

TimeBar 时间条TimeBarPanel.cs

  • 看什么:当前游戏时间“第X天 HH:00”(小时粒度)+ 4 档速度按钮(暂停 / 1x / 2x / 5x),当前档高亮。
  • 操作:点速度按钮直接设速;Tab 循环(跳过暂停档);Space 暂停。
  • 开关:开局常驻,不可关。

VictoryHUD 胜利进度按钮VictoryHUDPanel.cs

  • 看什么:小按钮显示“已达成 N/4”胜利条件数;4 项全达成时按钮变高亮样式。
  • 操作:点击或按 V 打开 VictoryDetail 弹窗。
  • 数据:贸易收入 ≥ 50000 金 / 全部国家声望 ≥ 50 / 占领 ≥ 2 城 / 击杀 ≥ 1 Boss(阈值为 VictoryManager.cs 代码常量)。详见 游戏循环与胜负

NavMode 航行模式角标NavModePanel.cs

  • 看什么:三态指示——“手动” / “自动 →(x,z)目标坐标” / “已中断 [N 恢复]”,不同状态不同配色。
  • 操作:点击角标 = 按 N,切换手动/自动。
  • 附带:航行事件转 Toast——已抵达(2 秒)、自动航行已暂停(2 秒)、恢复(2 秒)、被阻断关闭(3 秒)、目标不可达(2 秒)、开始航行(2 秒)。详见 寻路与移动

CurrentLocation 位置面板CurrentLocationPresenter.cs,不走槽位,左上角固定)

  • 看什么:两行。第一行国籍:“国籍: 无国籍”(灰)或“国籍: 某国 ★”(金);第二行当前海域,每 0.5 秒刷新:公海(青)/ 自由港 · 城名(青)/ 国名 · 城名 (友好/中立/敌对)(按关系绿/橙/红染色)/ 未知海域(未发现该国时,灰)/ 国名 · 未知港口(国家已发现但城市未发现)。
  • 操作:点国籍行打开外交总览弹窗。
  • 关联:城市与国家探索与情报

MainLeft 槽位当前无互斥成员。左侧的常驻面板均直挂主文档:

ShipInventory 船上物品栏ShipInventoryPanel.cs,左侧 8px、纵向 33%~67% 区段、宽 240px)

  • 看什么:全船存储类建筑容器(输入+输出+存储)聚合后的物品清单,每行 = 图标 + 中文名 + 鲜陈徽章 + ×数量。生产建筑(出现在 ProductionBuildingConfig.csv 里的)内的物品不计入——卡在厨房输入端的肉不算“可用资源”。
  • 鲜陈徽章:“新鲜”(绿)/“陈旧 -50%”(橙,提示价值减半)。详见 物品与库存
  • 刷新:每 0.2 秒轮询。开局常驻不可关。

AutoHullSettings 自动船壳AutoHullSettingsPresenter.cs,左上 top=60px、宽 220px)

  • 看什么:启用开关 + 默认材质下拉(松木板 / 硬橡木 / 黄铜合金 / 铆接铁板)。
  • 开关:进入建造模式自动显示,退出自动隐藏。详见 修建

Harbor 港口面板HarborPanel.cs + HarborPresenter.cs

  • 开关:玩家船驶入城市触发范围自动弹出,驶出自动关闭;交易开始时让位(隐藏),交易结束若仍在港内自动恢复。无手动开关。
  • 看什么:城市名 + 四个按钮:交易 / 修船 / 招募 / 外交。
  • 规则:敌对城市禁用交易/修船/招募三按钮(外交始终开放——可在敌对国港口求和);关系实时变化(如停火成功)立即刷新按钮可用性。
  • 修船按钮逻辑:有损毁地板时检查金币够不够(不够弹红色飘字“金币不足!需要 N 金币”),修复全部地板并扣费 + 播放金币飞行特效;有积水则排空;两者都没有仅记录“状态良好”。修船费用公式在船体系统,见 船只
  • UXML 按钮文案在 Assets/UI/MainRight/Harbor/HarborPanel.uxml

HarborBriefing 港口简报HarborBriefingPresenter.cs,场景内序列化挂载)

  • 靠港时收到简报消息弹出:[确定] 新闻列表 + [流言] 列表,点关闭隐藏。面板 UXML 与宿主文档在场景对象 Inspector 上指定。详见 探索与情报

ShipPerformance 船只状态ShipPerformancePresenter.cs,右下角、小地图正上方 8px、宽 240px、高约 250px)

  • 看什么:总质量(t,建造预览时叠加显示“+X t“质量增量)/ 引擎输出(进度条,满格参考值 24,代码常量)/ 速度上限倍率 x?.?? / 实时速度 m/s / 线加速度 m/s²、角加速度 °/s²(加速绿、减速红、±0.05 死区内灰)/ 浮力百分比(< 30% 红、30%~60% 金、≥ 60% 绿)。
  • 开局常驻不可关。详见 船只

MiniMap 小地图 / 全屏战略地图MiniMapPresenter.cs,右下角 200×200px,距右 8px、距底 64px)

  • 跟随模式(默认):玩家船三角(白,15px)永远居中并随船头旋转,视野半径 200 米(世界单位,代码常量)。显示内容:
    • 城市:黄色方块(12px);视野外但距离 ≤ 1000 米时在地图边缘显示黄色指示三角(12px)指向城市方向;未发现的城市完全隐藏。
    • 港口:青蓝小方块(7px)+ 港口安全圈(青绿半透明圆,半径 80 米,纯视觉提示,HarborSafeZoneConstants.cs)。
    • 怪物区:红色半透明区域(透明度强制 0.35),圆形或多边形;未发现的区域不显示(战争迷雾联动)。
    • 遭遇危险区:红色填充(透明度 0.25),仅已发现的区域。详见 遭遇与刷怪
    • 岛屿:多边形(在怪物区之上)。其它船:灰色三角(10px,敌/中立按标记色)。
    • 自动航行:橙色航线折线(2px)+ 拐点圆点 + 红色 X 目标标记。
    • 战争迷雾:未探索全黑(不透明)、已探索半透明黑(50%)、当前视野圈全透明;玩家船跨格才重建迷雾贴图。详见 探索与情报
  • 全屏模式(按 M 或相机滚轮拉远到头):以世界中心为中心、letterbox 正方形显示全世界;额外渲染国家领地染色(各国 AreaColor,透明度 0.55,未发现国家不染)、国境线(白 2px)、海岸线(米色 1.5px)、城市名标签。200 毫秒淡入淡出动画。
  • 操作:右键 = 设自动航行目标;Shift+右键 = 追加航点;M / ESC / 滚轮拉近退出全屏。
  • 数据源:MiniMapManager.cs(Service 层标记注册表)+ MiniMapMarker.cs(挂在世界对象上,类型/颜色/大小为 Inspector 序列化字段)。

MenuButton 菜单按钮MenuButtonPresenter.cs,右下角 40×40px“≡“按钮)

  • 点击或按 ESC 打开 MainMenu 弹窗。

BottomContent / BottomBar 槽位(底部)

Section titled “BottomContent / BottomBar 槽位(底部)”

ModeBar 操作栏ModeBarPanel.cs,永驻不可关)

  • 五个按钮:建造(toggle BuildBar)/ 拆除(禁用占位,悬停提示“开发中”)/ 外交(打开外交总览弹窗)/ 船员(toggle 船员管理浮窗)/ 组织树(toggle 组织树浮窗)。
  • 按钮高亮跟随对应面板开闭;浮窗类无事件流,用 0.5 秒轮询同步高亮。
  • 按钮文案在 Assets/UI/Bottom/ModeBar/ModeBarPanel.uxml

BuildBar 建造栏BuildBarPanel.cs

  • 开关:ModeBar 建造按钮 / B 键 / 任意建筑快捷键(自动进建造模式)。打开即令 BuildingController 进入建造模式,关闭退出。
  • 看什么:7 个分类 Tab(结构 / 门窗楼梯 / 蒸汽链 / 工坊 / 武器 / 储存传输 / 家具,硬编码于 BuildBarCategories.cs)+ 横向卡片网格。再点同一 Tab 折叠卡片区。
  • 卡片(88×112px):快捷键角标 + 图标 + 名称 + 尺寸/放置策略 + 造价缩写(“木30 石20”)。悬停弹详情:建造材料 chips、输入→输出配方或作用描述、HP。卡片数据全部来自 CSV(建筑表 / 建造成本表),见 修建配置表总览
  • 选中卡片 → 进入该建筑放置模式;键盘快捷键跨分类选建筑时 Tab 自动跟随切换。
  • 详情区四个小节标题文案(“建造材料 / 输入 → 输出 / 作用 / HP”)集中在 BuildBarCardLabels.cs

所有 Modal 共性:盖在一切之上;打开时世界标签 UGUI 隐藏;多数支持点空白区域关闭(Crafting / Trading / Recruitment / WorkPriority 例外——前者点空白不关,防误操作丢队列/挂单)。

VictoryDetail 胜利条件详情VictoryDetailPanel.cs,V 键或点 VictoryHUD)

  • 4 张卡片,每张:图标 + 名称 + 进度条 + 进度文本 + 提示语。
    • 贸易大亨:进度 = 累计售出收入 / 50000;未达成提示“还差 N 金。建议跑长途价差航线。”
    • 外交家:进度 = (最差国声望 + 100) / (50 + 100)(把 -100~+50 区间映射成 0~1);提示“在港口签贸易协定 (+20),或击败 Boss 时该国声望 +15。”
    • 征服者:进度 = 已占城数 / 2;提示“击毁敌国城市的所有防御塔即占领。”
    • 屠龙者:0 或 1;提示“Boss 在火山海域游荡。约 10× 普通海怪血量。”
  • 点空白处关闭;达成的卡片打“已达成”徽章。

Confirm 通用二次确认ConfirmModalPanel.cs

  • 标题 + 正文 + 确定/取消两按钮(文案由调用方传入,默认“确定/取消”);点背景 = 取消。供解雇船员等危险操作复用。

Crafting 制造CraftingPanel.cs + CraftingPresenter.cs

  • 开关:非弹窗状态下左键点击需要船员操作的生产建筑(且有可用配方)自动打开;右上角 X 关闭。
  • 左栏配方卡:配方名 + “生产时间s · 工种”(工种中文映射硬编码在 CraftingPanel.cs 的 WorkTypeLabel)+ 输入→输出物品 chips + 数量选档(x1 / x5 / x10 / INF 无限)+ 添加按钮。
  • 右栏:制造队列(每条可暂停/上移/下移/删除,“清空”全清;显示 完成数/目标数 或 ∞)+ 输入/输出容器实时内容(0.4 秒轮询)。
  • 配方数据来自 CSV,见 生产与制作

Trading 交易TradingPanel.cs + TradingPresenter.cs

  • 开关:交易系统会话开始自动打开(港口面板点“交易”),X 按钮 = 结束交易自动关闭。
  • 左栏商人在售(点击挂购买单)、右栏玩家持有(点击挂出售单);每行:图标 + 名称 + 鲜陈徽章 + 单价@$ + 库存 + 挂单数 + [−][+][组](组 = 一整叠)。
  • 陈旧品出售价 = 商人收购价 × 价值系数(陈旧 -50%),原价划线展示。
  • 底部预览:“金币 ±N 买 X 件 $A 卖 Y 件 $B” + 重置 + 确认交易(无挂单或校验失败时禁用,失败原因显示在预览处)。每 0.5 秒轮询库存。
  • 价格公式见 交易

Recruitment 招募 / 船员管理RecruitmentPanel.cs

  • 开关:港口面板点“招募”自动打开(敌对港禁止);X 或确认成功后关闭;关闭时自动清空未确认挂单。
  • 顶部摘要:金币 / 船员数 当前/上限(上限来自经济配置 baseCrewCapacity)/ 月薪总额 / 待支出(超过持有金币变红)/ 净月薪变动(增红减绿)。
  • 左栏候选:姓名 + 性别/职级/专业 chips + 六维属性摘要(体/耐/气/艺/知/战)+ 月薪 + 签约费 + 招募 toggle。
  • 右栏在编:姓名 + 职级/专业 + 月薪 + 解雇遣散费 + 解雇/驱逐双 toggle(解雇付遣散费、驱逐不付,互斥)。
  • 底部:重置 + 确认(金币不足或无挂单禁用,提示文案三态)。数值规则见 船员

Diplomacy 外交DiplomacyPanel.cs

  • 两种打开模式:港口“外交”按钮(带城市上下文,动作可执行);ModeBar“外交”按钮 / 位置面板国籍行(总览模式,动作区整体隐藏)。点空白处关闭。
  • 顶部:已发现国家的声望 chip(国名 + 声望值 + 友好/中立/敌对,国籍国带 ★),点击切换查看对象。
  • 中部:国与国关系矩阵(友/中/敌 单字着色格)。
  • 底部三动作(仅港口模式):
    • 贸易协定 - 5000 金:须在该国港口、可谈判、金币 ≥ 5000。
    • 停火协议 - 10000 金:须敌对关系且金币 ≥ 10000。
    • 申请国籍(须该国友好)/ 放弃国籍(任意港口)。
    • 三按钮的金额门槛为 DiplomacyPanel.cs 内联数值;实际扣费与声望变更由城市外交触发器执行,见 阵营与外交
  • 操作结果用鼠标位置飘字反馈(成功绿 / 失败红)。

WorkPriority 工作优先级WorkPriorityPanel.cs,H 键开关)

  • 行 = 船员,列 = 6 个可分配工种(炮术 / 修建 / 烹饪 / 医疗 / 搬运 / 制作;布道与指挥无任务实装被排除,单源清单在 CrewPanelIcons.cs)。
  • 格子 = 优先级 09:左键 +1(9 再点回 0 禁用),右键 −1(0 再点回 9)。显示规则:0 = “—” 灰;13 黄底;4~6 绿底;≥7 橙底(阈值 4/7/上限 9 为 ConsumerPriorityConfig.cs 代码常量)。
  • 任务分配如何消费优先级见 任务与工作

RankChange 职级变更RankChangeModalPanel.cs

  • 由船员抽屉的升职/降职/转岗按钮打开。两步:选目标职级 →(目标为专家时)选专业(木匠/炮手/事务长/军医/牧师)。
  • 升职链:水手→专家(需选专业)→军士→船长;降职可跨级;专家→水手会显示警告“进入失意 60 天,效率 -20%”;转岗仅专家可用,副作用“心情 -5 / 3 天”。提交后弹 Toast(2.5 秒)。职级规则详见 船员

MainMenu 游戏菜单MainMenuPanel.cs,ESC 或右下角“≡“)

  • 半透明遮罩 + “菜单 / 游戏已暂停” + 继续游戏 / 退出游戏。打开时若未暂停则自动暂停,关闭时仅恢复“由菜单暂停”的情况(不覆盖玩家此前手动暂停)。

Floating 槽位(可拖动浮窗,不阻塞游戏)

Section titled “Floating 槽位(可拖动浮窗,不阻塞游戏)”

CrewManagement 船员管理CrewManagementPanel.cs,ModeBar“船员”按钮开关)

  • 浮窗(默认宽 440px),首开居中,可拖 header 移动,本次游戏内记住位置;右上 X 关闭。
  • 3 个 Tab:概览(警告原因 + 当前任务名)/ 工作(6 工种优先级速览,有优先级但技能为 0 标“无技能”样式)/ 状态(疲劳/饥饿/口渴/排泄/HP 五条横条,需求 ≥ 90 红、≥ 60 黄;HP 反向 ≤ 30% 红、≤ 60% 黄)。
  • KPI 条:警告数 / 重伤数(HP ≤ 50%)/ 欠薪数(≥ 1 月)/ 总人数;失能人数 > 0 时出现红色“失能 N” chip,点开失能名单(救援由系统自动派发)。
  • 行警告判定(CrewRowViewModel.cs):失能 → 危险;HP ≤ 30% → 危险;疲劳/饥饿/口渴/排泄 ≥ 90 → 警告;欠薪 ≥ 2 月 → 警告。组内危险行排前。
  • 按职级分组(船长→军士→专家→水手),组头可折叠。点行推出右侧抽屉(CrewDrawerView.cs):状态/心情/属性/技能/回忆 5 个子页 + 7 个操作按钮(升职/降职/转岗/优先级跳转/定位/解雇/驱逐;解雇驱逐有港口门控——必须停靠非敌对港,CrewActionRouter.cs)。
  • 整体 1 秒刷新一次。船员属性含义见 船员船员社交与关系

CrewTree 组织树CrewTreePanel.cs,ModeBar“组织树”按钮开关)

  • 报告链/子群/关系叠加三种视图 + 搜索框;可缩放平移画布;拖拽船员卡改变汇报关系,改动先入草稿,右上“应用更改 (N)”/“取消”生效或回滚。详见 船员社交与关系

VictoryScreen 胜利结算VictoryScreen.cs,UGUI,sortingOrder=999)

  • 任一胜利条件达成时全屏弹出(黑色 70% 遮罩 + 称号 + 描述),自动暂停游戏,关闭恢复。文案硬编码在该文件 VictoryTexts 字典。

Respawn 沉船倒计时RespawnPresenter.cs

  • 玩家船沉没时屏幕中央偏上弹出复古风倒计时框:“船 只 沉 没” + 大号秒数 + “金币与物资将随海葬失去”;不拦截世界输入;复活完成自动隐藏。倒计时时长由船体系统决定,见 船只

所有世界标签挂在专用 WorldLabelCanvas(sortingOrder = −10,永远被面板 UI 遮盖,WorldLabelCanvas.cs)。每帧把目标世界坐标投影到屏幕坐标跟随;目标在相机背后时移出屏幕。AI 船所属的标签统一受“AI 世界 UI 开关”控制显隐(AIWorldUIGateBinding.cs),玩家船所属永远显示。

标签 跟随对象 内容 关键数值 出处
船员名牌 船员头顶 2.2m 名字 + 职级/专业色块行 + 当前任务名与进度条(55×5px)+ HP 条(55×4px)+ 对话行 任务/HP 每 0.12 秒刷新;HP 条仅受伤时显示;HP ≤ 30% 红、≤ 60% 黄、其余绿(阈值来自 NeedsConfig.cs CrewNameTag.cs
建筑血条 建筑头顶 2.4m 单条 HP 进度条(55×5px) 仅受损时显示,满血隐藏;0.1 秒刷新 BuildingHealthTag.cs
建造进度条 框架建筑头顶 2.0m 建造进度(55×5px 绿条) 0.08 秒刷新 BuildingProgressBar.cs
锅炉状态 锅炉头顶 1.2m 三条竖排:煤量(琥珀)/ 蒸汽(淡蓝)/ 水(深蓝),50×4px 0.2 秒刷新 BoilerStatusTag.cs
引擎状态 引擎头顶 1.2m 三条:动力输出(有动力绿 / 无动力红)/ 蒸汽 / 冷凝水 0.2 秒刷新 EngineStatusTag.cs
水泵状态 水泵头顶 同类竖条 WaterPumpStatusTag.cs
AI 船国籍 AI 船头顶 6m 国家色块 + 国名(未注册阵营显示“海盗”+灰) 仅 AI 船有 AIShipNationalityTag.cs

气泡与飘字:

  • 世界气泡WorldBubbleSystem.cs + WorldBubble.cs):深色底白字气泡,默认显示 5 秒、悬于目标上方 2.2m;同一目标的多条消息自动排队逐条显示;固定坐标模式不排队直接叠加。船员闲聊对白走此系统(CrewDialogueManager.cs,5 秒)。需要场景中手动放置并在 Inspector 绑定 Canvas。
  • 社交气泡 + 好感飘字SocialBubbleOverlay.cs):船员社交互动开始时双方头顶 2.2m 弹互动类型文字(闲聊/深聊/讲笑话/传八卦/争吵/辱骂,各有配色);结束时头顶 2.5m 飘“±X 好感“数字(正绿负红,1 秒上漂渐隐)。世界空间 TMP 文本,始终面向相机。
  • 鼠标位置飘字MouseTooltip.cs):操作反馈(“金币不足!”“贸易协定签订成功!“等)在鼠标处弹出,向上飘 50px、1.2 秒淡出、字号 24(均为 Inspector 序列化字段);错误红 / 成功绿 / 警告黄。
  • 金币飞行特效WorldGoldFlyEffect.cs):修船付费时金币从船飞向城市的 3D 抛物线特效;金币数 = 按金额在 3~15 枚之间线性插值(500 金封顶),飞行 1.2 秒、弧高 8m、生成间隔 0.05 秒(均为 Inspector 序列化字段)。
  • 航点光柱NavTargetWorldMarker.cs,LineRenderer 世界视觉):每个自动航行航点一根橙色海面光柱,高 40m、底宽 2.5 / 顶宽 0.4,1.5 秒周期呼吸(宽度 0.851.25 倍、透明度 0.450.95);抵达拐点自动消失。

鼠标跟随悬浮窗(UI Toolkit,三者通过 PopupCoordinator.cs 互斥——任一弹出其余自动关闭;均偏移鼠标 (15, 15)px):

  • 容器悬浮窗ContainerPopupManager.cs,左键点建筑/地面物品):标题 = 建筑名(建造中/已摧毁后缀);按建筑能力自动出现小节——HP 条(≤25% 红、≤50% 橙、其余绿)/ 建造小节(材料%、工作%、缺料清单“待运:…”)/ 占用小节(床厕等:使用中红 / 已预约橙 / 空闲绿)/ 生产小节(配方名 + 进度% + 等原料暂停标识 + 队列数;引擎附动力条、锅炉附煤量条与“燃料告急”)/ 管道小节(断开红 / 空 / 水绿 / 蒸汽橙)/ 物品格子网格(Factorio 风 36px 方格,含空槽,鲜绿/陈橙边框,×数量角标)。0.3 秒刷新,弹出位置固定不跟随。
  • 船员悬浮窗CrewPopupManager.cs,左键点船员):内容与船员管理面板的抽屉是同一份视图(宽 360px、最高 520px),含全部操作按钮。
  • 武器分配悬浮窗WeaponPopupManager.cs,右键点有人武器):武器名 + 当前分配状态(已禁用红 / 手动:某人绿 / 自动:某人绿 / 未分配灰)+ [自动][禁用|启用] 按钮 + 全船员列表(标注炮术等级、已分配他处、炮术禁用),点人 = 手动指派,点当前指派人 = 取消转自动。0.5 秒刷新。详见 武器与弹药

右上角竖列通知(ToastManager.cs,时间条正下方 top=56px、右 16px、宽 320px)。规则:上限 5 条,新的插顶部,超限挤掉最旧;每条 = 左侧色条(信息蓝 / 成功绿 / 警告橙 / 危险红)+ 标题 + 可选副文 + X 关闭按钮;Duration > 0 自动消失,Duration = 0 持续显示直到玩家点 X 或触发条件恢复;同类通知(同去重键)只保留最新一条,不堆叠。

触发源 标题(文案出处) 类型 持续 触发/恢复条件
ShipBuoyancyToast.cs 船体进水 警告 持续 浮力状态 安全→进水;恢复安全时撤销并弹“船体稳定”(3 秒)
同上 危险:水位 50% / 紧急:水位 75% 危险 持续 水位首次跨过 50% / 75% 阈值
LowSupplyAlertPresenter.cs 食物告急 / 淡水告急 警告 持续 全船存储类建筑内食物/淡水总量 < 船员数 × 5(0.5 秒检查一次);副文实时更新“剩余 N”;恢复自动撤销
RotAlertPresenter.cs 明日腐烂 / 物资腐烂 警告 6 秒 / 5 秒 保质期系统按日推送预警与事后清单
CrewAlertPresenter.cs 船员死亡 危险 6 秒 玩家船员死亡(含死因)
同上 船员失能 / 船员恢复 警告 / 信息 5 秒 / 4 秒 失能集合 0.5 秒轮询 diff(累倒/饿晕/渴晕/重伤)
CaptaincyToast.cs 船长缺岗(“船速 ×0.5”)/ 船长到岗 危险 / 成功 5 秒 / 默认 船长在岗状态变化;开局缺岗立即提示
ZoneToastPresenter.cs(屏幕顶部中央独立容器,非右上角) 进入海域 — X / 已离开 — X 黄 / 灰 3 秒 / 2 秒 玩家船进出遭遇海域
NavModePanel.cs 航行状态系列(见 Top 槽位) 信息/警告 2~3 秒 自动航行事件
RankChangeModalPanel.cs 升降职/转岗结果 2.5 秒 职级变更提交

下表为 UI 层自身的关键数值。除注明 Inspector 外全部是代码常量(改动需程序协助)。

单位 出处
游戏速度档位 0(暂停)/ 1 / 2 / 5 倍速 TimeBarPanel.cs
Top 槽高度 屏幕 5% UIBootstrap.cs
Toast 上限 / 宽度 5 条 / 320px ToastManager.cs
低物资告警阈值 船员数 × 5 LowSupplyAlertPresenter.cs
船上物品栏刷新 0.2 ShipInventoryPanel.cs
船员管理刷新 1 CrewManagementPanel.cs
容器悬浮窗刷新 0.3 ContainerPopupManager.cs
交易/武器悬浮窗刷新 0.5 TradingPanel.csWeaponPopupManager.cs
制造容器刷新 0.4 CraftingPanel.cs
位置面板刷新 0.5 CurrentLocationPresenter.cs
船员名牌任务/HP 刷新 0.12 CrewNameTag.cs
小地图视野半径(跟随) 200 MiniMapPresenter.cs
小地图尺寸 / 位置 200×200,右 8 / 底 64 px MiniMapPresenter.cs
城市边缘指示最大距离 1000 MiniMapPresenter.cs
港口安全圈半径 80 HarborSafeZoneConstants.cs
全屏地图淡入淡出 200 毫秒 MiniMapPresenter.cs
世界气泡默认时长 / 高度 5 秒 / 2.2m WorldBubbleSystem.cs
船员对白时长 5 CrewDialogueManager.cs
好感飘字时长 1 SocialBubbleOverlay.cs
鼠标飘字:上飘 / 时长 / 字号 50px / 1.2 秒 / 24 Inspector MouseTooltip.cs
金币飞行:枚数 / 时长 / 弧高 3~15(500 金封顶)/ 1.2 秒 / 8m Inspector WorldGoldFlyEffect.cs
HP 显示阈值(船员/建筑悬浮窗共用) 危险 ≤ 30%,警告 ≤ 60% 百分比 NeedsConfig.cs
船员行警告:需求阈值 / 欠薪 ≥ 90 / ≥ 2 月 点 / 月 CrewRowViewModel.cs
KPI 重伤判定 HP ≤ 50% 百分比 CrewManagementPanel.cs
工作优先级范围 / 色阶 09;0 禁用,13 / 4~6 / ≥7 三档 ConsumerPriorityConfig.csWorkPriorityPanel.cs
制造数量选档 1 / 5 / 10 / 无限 CraftingPanel.cs
外交按钮金额门槛 贸易协定 5000,停火 10000 DiplomacyPanel.cs
胜利阈值(HUD 显示用) 50000 金 / 声望 50 / 2 城 / 1 Boss VictoryManager.cs
引擎输出条满格参考 24 动力 ShipPerformancePresenter.cs
浮力条变色 < 30% 红,< 60% 金 百分比 ShipPerformancePresenter.cs
加速度显示死区 ±0.05 m/s² ShipPerformancePresenter.cs
水位告警阈值 50% / 75% 百分比 ShipBuoyancyToast.cs
航点光柱:高 / 呼吸周期 40m / 1.5 秒 NavTargetWorldMarker.cs

改按钮/静态文案(策划可直接改,无需程序)——14 个面板用 UXML 声明静态文本,路径 Assets/UI/{槽位}/{面板}/{面板}.uxml:ModeBar 五按钮、Harbor 四按钮、TimeBar、NavMode、VictoryHUD/Detail、Confirm、Diplomacy、RankChange、CrewManagement、CrewTree、BuildBar、HarborBriefing、CrewDrawer。改后无需重新生成代码。

改动态文案(需改 C#,但都是集中字面量)

文案 文件
建造栏小节标题(建造材料/输入→输出/作用/HP) BuildBarCardLabels.cs
建筑层中文名(地板/设施/管道/照明) BuildingLayerLabels.cs
任务中文名(进食/搬运/操炮…)与工种长名 CrewPanelIcons.cs
制造弹窗工种标签 CraftingPanel.cs(WorkTypeLabel)
胜利卡片名称/描述/提示语 VictoryDetailPanel.cs(Cards 数组)、VictoryScreen.cs(VictoryTexts)
全部 Toast 标题与副文 各 Presenter:ShipBuoyancyToast.csLowSupplyAlertPresenter.csRotAlertPresenter.csCrewAlertPresenter.csCaptaincyToast.csZoneToastPresenter.csNavModePanel.cs
位置面板/外交关系词(友好/中立/敌对/公海/未知海域) CurrentLocationPresenter.csDiplomacyPanel.cs
自动船壳材质名 AutoHullSettingsPresenter.cs(Materials 数组)

物品/建筑显示名不在 UI 层:来自 CSV 配置表(策划可直接改),见 物品数据表配置表总览

图标:按约定路径放 PNG 即自动生效(IconRegistry.cs)——建筑 Resources/UI/Icons/Buildings/{建筑名}.png、物品 Resources/UI/Icons/Items/{物品ID}.png;找不到时回退占位样式。

常见调参对照

想调的体验 改哪里 来源类型
建造栏分类与排序 BuildBarCategories.cs 硬编码数组 代码常量
低物资告警灵敏度(人均 5 件) LowSupplyAlertPresenter.cs PerCrewMultiplier 代码常量
小地图视野/尺寸/各图标大小颜色 MiniMapPresenter.cs 顶部常量区 代码常量
单个世界标记的颜色/大小/是否显示 对应 prefab 上 MiniMapMarker.cs 组件字段 Inspector
金币飞行观感 场景 WorldGoldFlyEffect 对象字段 Inspector
鼠标飘字观感 场景 MouseTooltip 对象字段 Inspector
Toast 上限/位置 ToastManager.cs 常量 代码常量
新增/删除一个屏幕面板 Resources/Panels/ 增删 prefab(挂 PanelBase 子类)即自动注册 prefab
外交协议金额 DiplomacyPanel.cs(UI 门槛)+ 城市外交触发器(实际扣费),两处需同步 代码常量
  • 项目说明文档与实现有出入.claude/CLAUDE.md 把 VictoryDetail 归在 MainLeft 槽,实际它是 Modal 层(VictoryDetailPanel.cs Layer=Modal,文件仍放在 MainLeft 目录);文档列举的 ReputationHUD 已删除(声望并入外交弹窗)、GoldCounter 不存在(金币只在交易/招募弹窗内显示)、BuildDetail 无独立面板(并入 BuildBar 悬停详情)。
  • 拆除按钮是占位:ModeBar 的“拆除”按钮永久禁用,悬停提示“开发中”(ModeBarPanel.cs)。
  • MainLeft 槽位长期空置:船上物品栏特意不走槽位(避免被互斥顶掉),槽位机制保留但当前无消费者。
  • 旧版港口面板是自毁桩Service/CitySystem/UI/HarborPanel.cs 已废弃,Awake 即销毁自身 GameObject,仅为兼容场景里残留的旧 prefab 引用;功能全部在 UI Toolkit 版 Core/UI/MainRight/Harbor/HarborPanel.cs
  • MiniMapManager 的相机/RenderTexture 是旧渲染路径残留:新版小地图为自绘图标,不消费 RenderTexture,但 MiniMapManager.cs 仍默认自动创建小地图相机(Inspector 字段 _autoCreateCamera)。
  • 容器悬浮窗管道小节不显示流量:管道段的流量字段始终为 0(流体网络走端点不写管段),UI 刻意只显示占用流体类型(ContainerPopupManager.cs 注释)。
  • 布道/指挥工种在所有 UI 中被排除:无对应任务实装(CrewPanelIcons.cs)。
  • ModeBar 浮窗高亮是 0.5 秒轮询:船员/组织树按钮的激活态最多延迟半秒。
  • 船员管理面板注释写“4 Tab (概览/工作/驻守/状态)”,实际只有 3 个 Tab(无“驻守”,CrewManagementPanel.cs)。
  • 世界气泡系统需场景手动放置WorldBubbleSystem.cs 不自动创建,且 Inspector 必须绑定 Canvas,缺失时船员对白气泡静默失效。
  • WorldSpaceTextUI.cs 仅编辑器 Scene 视图可见,不是玩家可见 UI。
  • 外交金额双处维护:弹窗按钮上的 5000/10000 金是 UI 端写死的门槛与展示文案,实际扣费逻辑在城市外交触发器内,两处数值需人工保持一致。