Files
mod_ui_base/docs/zh.md
T

72 lines
3.7 KiB
Markdown

# UI — 所有游戏共用的界面
UI 是所有游戏共用的界面层:右上角的工具栏、游戏内菜单、存档指示器、左上角的通知,以及背景画面和面板、按钮、列表的统一外观。它自己没有剧情,也不定规则。几乎所有其他模组都构建在它之上,所以每个游戏里都有它,大量模组也把它列为依赖。
![Cthangover 中午时分的一幕:左上角是时钟,右上角是工具栏,右侧是场景选项。](assets/scene-hud.jpg)
## 工具栏
每个图标都会打开一个面板。按钮并非固定不变:游戏中的每个模组都会加上自己的按钮,因此没有物品系统的小说游戏不会有背包,而带 Scenario Studio 的游戏则多出一个图标。
![Cthangover 的工具栏:工具、地图、背包、角色、招募者、技能、菜单(齿轮)和日志。](assets/toolbar.png)
在 Cthangover 中,从左到右依次是:
1. **工具** — 开发者工具菜单(仅当游戏包含编辑器时出现)。
2. **地图** — 世界地图(Map Engine)。
3. **背包** — 物品栏(Items)。
4. **角色** — 队伍和角色(Characters)。
5. **招募者** — 已招募的角色(Recruiting)。
6. **技能** — 技能(Skills)。
7. **菜单** — 下文介绍的游戏内菜单(本模组)。
8. **日志** — 任务(Quests)。
其他游戏显示的按钮不同:例如 RPG Plus 会多出**角色面板**。
## 游戏内菜单
齿轮图标打开菜单:**继续**、**保存**、**读取**、**设置**、**主菜单**和**退出**。在不允许存档的场景中,“保存”会变灰,如图所示。“读取”“保存”和“设置”打开的窗口与主菜单中相同。
![场景上方的游戏内菜单:Menu, Resume, Save, Load, Settings, Main menu, Exit。](assets/game-menu.jpg)
## 通知
左上角会出现简短消息:日志新增条目、剧情给出的提示等。同屏最多显示四条,每条停留约十秒,其余依次排队。
![时钟下方的通知:“看看四周。巷子里躺着什么东西。”——Cthangover 序章中的一条提示。](assets/notification.png)
## 给模组作者
**添加工具栏按钮及其面板**:在 manifest.json 里写一个 `ui` 条目。Items 就是这样添加背包的:
```json
"ui": [
{
"id": "inventory",
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/ui/inventory_panel.tscn",
"button": { "icon": "bag", "locale": "ui/inventory/title", "index": 20 },
"priority": 10
}
]
```
- `button.index` 决定图标顺序(地图 10、背包 20、角色 30、技能 40、菜单 50、日志 60、工作室 90);
- `button.icon` 是图标名,`button.locale` 是提示文字的翻译键;
- 不带 `button` 的条目是游戏自行打开的面板或覆盖层:Crafting 以 `"kind": "overlay"` 把工作台放进 `ModLastPanel` 槽位,并从剧本中打开它。
**从剧本打开面板**用 `ui.toggle_panel` 动作,**显示通知**用 `notify` 命令:
```scenario
notify "新的日志条目。"
```
**使用统一外观。** 用代码构建的面板会从组件库(`UiKit`)及其颜色、尺寸令牌中获取边框、文字、标签和按钮,因此新面板自然融入游戏整体风格并跟随主题变化。
## 出现问题时
1. **工具栏上少了按钮。** 添加它的模组不属于当前游戏;请在**模组与合集**中查看游戏的构成。
2. **“保存”是灰色的。** 当前场景不允许存档;换到别的地方再试。作者在场景任一剧本的头部写上 `save_allowed: true` 即可允许存档。
3. **面板打开了却是空的。** 对应模组在当前游戏中暂时没有内容可显示——例如还没有任务开始。