运行时的界面
游戏运行时屏幕上叠放的内容:页面、游戏 UI 与叠加页面各自出现在哪里,以及开始游戏、打开页面、退出游戏时屏幕的变化
游戏运行时,屏幕上的内容分层叠放。从下到上依次是游戏画面、游戏 UI、页面和叠加页面,上层盖住下层
- 确认、提示叠加在当前屏幕之上,位于所有页面上方叠加页面
- 标题、设置、存档、记录同一时间只显示一个页面
- 对话、选项、通知、快捷菜单开始游戏后自动显示游戏 UI
- 背景与角色开始游戏后显示,由故事控制游戏画面
| 层 | 在 UI 面板中 | 如何出现 | 何时存在 |
|---|---|---|---|
| 叠加页面 | 任意一个页面 | Show Layer(叠加页面)或 Show Confirm(询问确认)打开 | 任何时候 |
| 页面 | 界面类型为页面 | 入口页面在游戏启动时打开,其余由 Go Page(前往页面)打开 | 任何时候 |
| 游戏 UI | 界面类型为游戏 UI | 开始游戏时自动显示,不需要打开 | 游戏进行中 |
| 游戏画面 | 不在 UI 面板中 | Start Game(开始游戏)或 Load Save(读取存档)显示 | 游戏进行中 |
UI 面板中没有单独的叠加页面类型。任何页面都可以用 Go Page 打开,也可以用 Show Layer 叠加显示
一次游玩中屏幕的变化
下面以骨架模板创建的项目为例,跟随一次游玩,看屏幕上的内容如何变化
启动游戏
- 标题取代了入口页面(启动画面)页面
游戏启动后显示入口页面,即启动画面。入口页面在 UI 面板中标为入口页面,不能删除。任何页面都可以通过设为入口页面成为入口页面。此时还没有游戏画面,也没有游戏 UI
启动画面依次显示标志和声明,然后用标题执行 Replace Page。标题取代启动画面成为栈底的页面,之后不会再回到启动画面
打开另一个页面
- 设置页面
- 标题「返回上一页」时回到这里已隐藏页面
Go Page 打开设置,它取代标题显示在屏幕上。标题不再显示,但仍被记住:Go back(返回上一页)关闭设置,标题重新播放进场动画并再次触发 Surface Init(界面初始化)
连续使用 Go Page 会把页面逐个叠起来,Go back 每次关闭最上面一个。在最底下的页面上使用 Go back 不执行任何操作。Go Page 的页面选择为 None 时,关闭最底下页面之上的所有页面
开始游戏
- 快捷菜单舞台位置游戏 UI
- 对话、选择、通知对白、选项、通知位置游戏 UI
- 背景与角色游戏画面
- 标题已隐藏页面
标题上的按钮执行 Start Game。所有页面隐藏,游戏画面显示出来,游戏 UI 显示在游戏画面之上。此时屏幕上没有页面,玩家看到的是故事和游戏 UI
游戏 UI 不需要打开。游戏开始时,项目中的每个游戏 UI 显示在它所在的位置上,游戏结束时一并移除。没有游戏 UI 的位置使用内置的对话框、选项菜单和通知
在游戏中打开页面
- 记录背景略透明,能看到下面的场景页面
- 快捷菜单暂时淡出游戏 UI
- 对话、选择暂时淡出游戏 UI
- 通知通知位置保持显示游戏 UI
- 背景与角色游戏画面
- 标题已隐藏页面
快捷菜单上的记录按钮执行 Go Page。游戏进行中打开的页面显示在游戏画面之上,页面自身的背景略微透明。页面显示期间:
- 故事停在当前行,点击、推进键和自动播放都不会推进它
- 对白、选项、NVL 和舞台位置的游戏 UI 暂时淡出,页面关闭后恢复。通知位置的游戏 UI 保持显示
- 点击和按键交给页面
Go back 关闭记录并回到游戏。在游戏中打开的页面之间继续使用 Go Page 会叠成多层,Clear Page(关闭全部页面)一次关闭游戏中打开的所有页面
叠加一个页面
- 确认模态叠加页面
- 记录仍然显示,不接收点击页面
- 快捷菜单暂时淡出游戏 UI
- 对话、选择暂时淡出游戏 UI
- 通知游戏 UI
- 背景与角色游戏画面
- 标题已隐藏页面
记录上的标题按钮执行 Show Confirm,询问是否回到标题。确认叠加在记录之上,记录继续显示在它下面。按 Escape 与点取消按钮一样,关闭确认而不作回答,记录仍然打开
页面
- 同一时间只显示一个页面。被新页面取代的页面不显示,
Go back时重新进场 Go back、Go Page和Clear Page都不会关闭最底下的页面。游戏启动时它是入口页面,退出游戏后它是Quit Game打开的页面Replace Page打开一个页面并关闭被它替换的页面。在最底下的页面上执行时,新页面会取代它的位置,启动画面就是这样把游戏交给标题页面的- 游戏开始前,页面下面没有其他内容。游戏进行中打开的页面显示在游戏画面之上,背景略微透明,并让故事停在当前行
Start Game与Load Save隐藏所有页面。游戏进行中,Go back与Clear Page不会让这些页面重新显示,游戏结束后它们随Quit Game一并关闭- 页面也可以通过页面控件嵌在另一个页面中显示。嵌入的页面属于外层页面的一部分,不参与上面的叠放
游戏 UI
- 每个游戏 UI 创建在一个位置上:对白、选项、通知、NVL 或舞台。每个位置只有一个游戏 UI
- 游戏 UI 只在游戏进行中存在。游戏开始时自动显示,游戏结束时自动移除,不需要用
Go Page打开 - 前四个位置替换游戏内置的对应界面。没有游戏 UI 的位置使用内置界面,因此删除对白位置的游戏 UI 后,游戏仍然有对话框
- 舞台位置不替换任何内置界面,用于快捷菜单、HUD 这类常驻在游戏画面上的内容。它空白的地方不拦截点击,点击会落到游戏画面上推进故事
- 通知位置只用于显示,不接收点击和按键
- 游戏进行中打开页面时,除通知以外的位置暂时淡出
叠加页面
Show Layer 把一个页面叠加在当前屏幕之上,原来显示的内容保持不变
- 叠加页面位于所有页面之上,包括在它之后才打开的页面
- 打开时可以设为模态:它下面的一切都不再接收点击,按键交给它。不是模态的叠加页面不影响下面的页面
- 模态的叠加页面让故事停在当前行。叠加页面不会让游戏 UI 淡出
- 游戏进行中显示的叠加页面与游戏进行中打开的页面一样,背景略微透明
- 打开叠加页面的那个页面关闭时,叠加页面随之关闭
Go back先关闭最上面一个可关闭的叠加页面,没有时才关闭页面。Hide Layer(移除叠加页面)关闭指定的叠加页面,Close This Layer(关闭本叠加页面)关闭它所在的那一个- 设为同一分组的叠加页面依次显示,前一个关闭后才显示下一个
Show Confirm打开的确认页面是模态、可关闭的叠加页面- 开始游戏、读取存档和退出游戏都会关闭所有叠加页面
点击和按键
同一时间可以有多处接收点击,但按键只交给一处。按下表从上往下,第一条符合的情况为准:
| 屏幕上 | 接收点击 | 接收按键 |
|---|---|---|
| 有模态的叠加页面 | 最上面的模态叠加页面,以及它上方的叠加页面 | 最上面的模态叠加页面 |
| 有页面 | 当前页面与所有叠加页面 | 当前页面 |
| 游戏进行中,没有页面 | 游戏 UI、叠加页面与游戏画面 | 游戏 UI |
按键先交给应用逻辑,再交给上表中的那一处
开发模式中的叠层面板
开发模式的叠层面板列出此刻屏幕上的内容,自下而上依次是游戏画面、游戏 UI、页面和叠加页面,并标出哪些接收点击、哪一处接收按键。暂时淡出的游戏 UI 和不在屏幕上的页面分别标明,玩家隐藏了对话框时将对话框标为已隐藏。在开发模式的调试工具菜单中选择叠层即可打开
故事结束时
故事播放完最后一行时,显示构建变体中剧本结束后显示的页面所选的页面,效果与 Quit Game 相同。选择不显示任何页面时,画面停在最后一帧