NarraLeaf

运行时的界面

游戏运行时屏幕上叠放的内容:页面、游戏 UI 与叠加页面各自出现在哪里,以及开始游戏、打开页面、退出游戏时屏幕的变化

游戏运行时,屏幕上的内容分层叠放。从下到上依次是游戏画面、游戏 UI、页面和叠加页面,上层盖住下层

屏幕上,自上而下
  1. 确认、提示
    叠加在当前屏幕之上,位于所有页面上方
    叠加页面
  2. 标题、设置、存档、记录
    同一时间只显示一个
    页面
  3. 对话、选项、通知、快捷菜单
    开始游戏后自动显示
    游戏 UI
  4. 背景与角色
    开始游戏后显示,由故事控制
    游戏画面
叠放次序固定不变。游戏画面与游戏 UI 只在游戏进行中出现
层在 UI 面板中如何出现何时存在
叠加页面任意一个页面Show Layer(叠加页面)或 Show Confirm(询问确认)打开任何时候
页面界面类型为页面入口页面在游戏启动时打开,其余由 Go Page(前往页面)打开任何时候
游戏 UI界面类型为游戏 UI开始游戏时自动显示,不需要打开游戏进行中
游戏画面不在 UI 面板中Start Game(开始游戏)或 Load Save(读取存档)显示游戏进行中

UI 面板中没有单独的叠加页面类型。任何页面都可以用 Go Page 打开,也可以用 Show Layer 叠加显示

一次游玩中屏幕的变化

下面以骨架模板创建的项目为例,跟随一次游玩,看屏幕上的内容如何变化

启动游戏

屏幕上,自上而下
  1. 标题
    取代了入口页面(启动画面)
    页面

游戏启动后显示入口页面,即启动画面。入口页面在 UI 面板中标为入口页面,不能删除。任何页面都可以通过设为入口页面成为入口页面。此时还没有游戏画面,也没有游戏 UI

启动画面依次显示标志和声明,然后用标题执行 Replace Page。标题取代启动画面成为栈底的页面,之后不会再回到启动画面

打开另一个页面

屏幕上,自上而下
  1. 设置
    页面
不在屏幕上
  1. 标题
    「返回上一页」时回到这里
    已隐藏页面

Go Page 打开设置,它取代标题显示在屏幕上。标题不再显示,但仍被记住:Go back(返回上一页)关闭设置,标题重新播放进场动画并再次触发 Surface Init(界面初始化)

连续使用 Go Page 会把页面逐个叠起来,Go back 每次关闭最上面一个。在最底下的页面上使用 Go back 不执行任何操作。Go Page 的页面选择为 None 时,关闭最底下页面之上的所有页面

开始游戏

屏幕上,自上而下
  1. 快捷菜单
    舞台位置
    游戏 UI
  2. 对话、选择、通知
    对白、选项、通知位置
    游戏 UI
  3. 背景与角色
    游戏画面
不在屏幕上
  1. 标题
    已隐藏页面

标题上的按钮执行 Start Game。所有页面隐藏,游戏画面显示出来,游戏 UI 显示在游戏画面之上。此时屏幕上没有页面,玩家看到的是故事和游戏 UI

游戏 UI 不需要打开。游戏开始时,项目中的每个游戏 UI 显示在它所在的位置上,游戏结束时一并移除。没有游戏 UI 的位置使用内置的对话框、选项菜单和通知

在游戏中打开页面

屏幕上,自上而下
  1. 记录
    背景略透明,能看到下面的场景
    页面
  2. 快捷菜单
    暂时淡出游戏 UI
  3. 对话、选择
    暂时淡出游戏 UI
  4. 通知
    通知位置保持显示
    游戏 UI
  5. 背景与角色
    游戏画面
不在屏幕上
  1. 标题
    已隐藏页面

快捷菜单上的记录按钮执行 Go Page。游戏进行中打开的页面显示在游戏画面之上,页面自身的背景略微透明。页面显示期间:

  • 故事停在当前行,点击、推进键和自动播放都不会推进它
  • 对白、选项、NVL 和舞台位置的游戏 UI 暂时淡出,页面关闭后恢复。通知位置的游戏 UI 保持显示
  • 点击和按键交给页面

Go back 关闭记录并回到游戏。在游戏中打开的页面之间继续使用 Go Page 会叠成多层,Clear Page(关闭全部页面)一次关闭游戏中打开的所有页面

叠加一个页面

屏幕上,自上而下
  1. 确认
    模态
    叠加页面
  2. 记录
    仍然显示,不接收点击
    页面
  3. 快捷菜单
    暂时淡出游戏 UI
  4. 对话、选择
    暂时淡出游戏 UI
  5. 通知
    游戏 UI
  6. 背景与角色
    游戏画面
不在屏幕上
  1. 标题
    已隐藏页面

记录上的标题按钮执行 Show Confirm,询问是否回到标题。确认叠加在记录之上,记录继续显示在它下面。按 Escape 与点取消按钮一样,关闭确认而不作回答,记录仍然打开

退出游戏

屏幕上,自上而下
  1. 标题
    页面

玩家确认后执行 Quit Game(退出游戏),节点上选择的页面是标题。游戏画面和游戏 UI 被移除,游戏开始前打开过的页面与所有叠加页面一并关闭,标题成为唯一的页面

页面

  • 同一时间只显示一个页面。被新页面取代的页面不显示,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 相同。选择不显示任何页面时,画面停在最后一帧

另请参阅

  • UI:创建页面与游戏 UI
  • Surface:页面的生命周期与蓝图事件
  • 应用节点:Go Page、Go back、Show Layer 等节点的引脚

本页目录