跳转到内容

输入处理 ​

Naninovel 使用 Unity 的 Input System ↗ 来监听以下操作。

名称键盘+鼠标游戏手柄描述
SubmitEnterButton South通用确认操作,例如,接受提示框或提交输入表单。
CancelEscapeButton East通用拒绝操作,例如,拒绝提示框或退出菜单。
DeleteDeleteButton North通用删除操作,例如,删除选定的存档槽。
NavigateArrow KeysD-Pad, Left Stick通用导航操作,例如,在一排存档槽之间选择。
ScrollPage Up/DownRight Stick通用滚动操作,例如,滚动历史记录。
PageShift+Left <-> Shift+RightLeft Trigger <-> Right Trigger通用翻页操作,例如,在存档/读档菜单中翻页。
TabCtrl+Left <-> Ctrl+RightLeft Bumper <-> Right Bumper通用选项卡切换操作,例如,在设置菜单中切换选项卡。
ContinueEnter, Scroll Wheel (Y-)Button South禁用等待输入模式(打印消息时激活)以继续脚本播放。
PauseBackspaceStart显示暂停 UI。
SkipCtrlButton West在操作处于激活状态(按住按钮)期间启用 跳过模式(快进)。
ToggleSkipTabRight Stick Press切换跳过模式(如果已禁用则持续启用,反之亦然)。
SkipMovieEscapeButton East跳过(取消)当前正在播放的 影片。
AutoPlayAButton East切换 自动播放模式,在该模式下,等待输入模式会在设定的延迟后自动禁用。
ToggleUISpaceButton North切换整个 UI 层的 可见性(隐藏/显示)。
ShowBacklogLRight Bumper切换 历史记录 UI 的可见性。
RollbackB, Scroll Wheel (Y+)Left Bumper将脚本向后倒回。
CameraLookMouse DeltaRight Stick在 @look 模式下移动摄像机。
ToggleConsole`切换开发控制台。
EnterDialogueEnter, EButton South, Button West激活对话触发器以进入 对话模式。

自定义输入 ​

您可以通过在 Naninovel -> Configuration -> Input 编辑器菜单中分配自定义 Input Actions 资产来配置默认操作并添加新操作。将相关操作保留在 Naninovel 映射下,以便引擎检测到它们。默认输入操作资产可以通过 Create -> Naninovel -> Input -> Controls 资产菜单创建——创建自己的资产时可以将其用作参考。

cover

示例

在 库存示例 中可以找到添加自定义输入绑定以切换库存 UI 的示例。具体来说,Scripts/Runtime/Inventory/UI/InventoryUI.cs 运行时脚本中使用了自定义“ToggleInventory”操作。

使用自定义输入操作时,建议在同一配置菜单中同时分配自定义 Event System。然后,在事件系统预制件的 Input System UI Input Module 组件中,将自定义输入操作资产分配给 Actions Asset 属性。这是各种 UI 相关功能正常工作所必需的。您可以通过 Create -> Naninovel -> Input -> Event System 创建适用于 Naninovel 的默认事件系统预制件。

cover

提示

为防止带有修饰键的操作(例如 Tab 和 Page)触发使用相同绑定但不带修饰键的其他操作(例如 Navigate),请在项目设置的 Input System Package 类别下启用 Enable Input Consumption 选项。

适应输入模式 ​

默认情况下,所有内置 UI 将根据最近使用的输入设备适应当前输入模式(鼠标和键盘、游戏手柄或触摸)。例如,如果玩家使用鼠标与游戏交互,但在某个时刻按下了游戏手柄上的按钮,UI 将切换到游戏手柄输入模式。

cover

您可以通过取消选中输入配置菜单中的 Detect Input Mode 选项来禁用该功能。

引擎初始化后激活的默认输入模式由输入管理器根据目标平台确定:

  • 游戏主机 -> 游戏手柄
  • 移动设备 -> 触摸
  • 其他 -> 鼠标

鼠标 ​

在此模式下,UI 将禁用其下所有 Selectable ↗ 对象的导航。这是为了防止按钮在被鼠标单击时转换为“选中”状态。

此外,如果在 Custom UI(或派生)组件中分配了 Button Controls 对象,它将被启用,而 Keyboard Controls 和 Gamepad Controls 将被禁用。这样,特定于鼠标输入模式的按钮(例如“关闭”按钮)和按键图例(例如游戏手柄按钮标签)就只会在关联的输入模式处于活动状态时可见。

游戏手柄 ​

游戏手柄模式将重新启用导航(如果在鼠标模式下被禁用),以便玩家可以使用 D-pad 或左摇杆在 Selectable 对象之间导航。

如果已分配,Gamepad Controls 图例将被启用,而其他图例(按钮和键盘)将被禁用。

提示

如果您想自定义游戏手柄图例图标,请查看 Xelu 的免费游戏手柄按键提示图标 ↗。

此外,在游戏手柄模式下显示模态 UI 时,将聚焦其中第一个活动的 Selectable 对象,以防止焦点卡在先前选定的对象上。可以通过显式分配自定义 UI 或派生组件的 Focus Object 来更改此行为,在这种情况下,UI 不会尝试自动查找焦点对象。

键盘 ​

当按下键盘导航(方向)键时激活。其他键不会激活此模式,因为它们在鼠标模式下用作热键。

除此之外,它的工作方式与游戏手柄模式相同,只是显示的按键图例不同。

触摸 ​

在触摸模式下,Naninovel 默认不会对受管 UI 执行任何特殊更改。但是,您可以通过重写 CustomUI 组件的 HandleInputModeChanged 方法来添加特定于触摸的行为。

要为特定 UI 禁用适应输入模式功能,请取消选中 Custom UI(或派生)组件的 Adapt To Input Mode 选项。要全局禁用该功能,请使用输入配置中的 Detect Input Mode 选项。

自定义输入后端 ​

Naninovel 允许使用自定义输入解决方案,例如 Rewired ↗,而不是 Unity 的内置输入系统。引擎仅在 InputManager 类中的几个虚方法内使用默认输入系统 API,并且引用是条件编译的,确保即使删除了默认输入模块也不会发生编译错误。

要使引擎使用自定义输入解决方案,请 覆盖 InputManager 引擎服务并重写所需的虚方法。