动作

概述

动作是玩家操作控制项 后,在游戏中触发的行为。

例如:向左转向、切换相机视角、切换菜单。

动作被定义在一个或多个 .json 文件中。

通过模组提供新的额外动作是可行的。需要注意的是,如果你没有同时提供一些动作按键的绑定,那么你的模组的用户会需要手动配置他的控制器。

动作有两种基本类型:常规动作特定车辆动作

常规动作

常规动作是指无论当前使用哪个车辆都可以触发的动作。

因此,即使在主菜单中,在进入任何关卡或生成任何车辆之前,它们也是可用的。

BeamNG.drive 附带了许多预定义的常规动作。这些动作被定义在:

lua/ge/extensions/core/input/actions/*.json

模组可以绑定额外的常规动作。要做到这一点,模组必须提供一个或多个额外的 json 文件,这些文件遵循以下命名约定:

lua/ge/extensions/core/input/actions/*.json

例如:

lua/ge/extensions/core/input/actions/explosions_mod.json
lua/ge/extensions/core/input/actions/advanced_menus.json

在这里定义的任何动作都将与 BeamNG.drive 提供的默认动作混合在一起,在 选项控制 菜单中供最终用户使用。

虽然可以使用自定义文件覆盖默认的 input_actions.json 文件,但这意味着模组作者需要在每次 BeamNG.drive 更新带来新动作(或修改、删除动作)时,不断更新其修改过的文件。因此强烈建议不要这样做。

特定车辆动作

特定车辆动作是指只能在驾驶特定车辆时触发的动作。如果你切换到不同类型的车辆,它们将会被新车辆的动作所取代。

BeamNG.drive 的一些官方车辆带有一些预定义的特定车辆动作。例如,小型加农炮(Small Cannon)提供了使用控制器开火的能力。这些特定车辆动作被定义在:

vehicles/vehicle_directory_name/input_actions.json

常规动作 相似,模组也可以绑定额外的特定车辆动作。由模组提供的文件必须遵循以下命名约定:

vehicles/vehicle_directory_name/input_actions*.json

例如:

vehicles/hatch/input_actions_hydraulic_suspension.json
vehicles/pickup/input_actions_winch_cable.json

所有这些动作通常会在 选项控制 菜单的 “特定车辆” 类别中找到。

再次强调,为你的特定车辆动作使用独一无二的文件命名时有必要的,以确保它们不会被其它模组中相同的文件命名的特定车辆动作覆盖。

动作文件格式

动作文件通常采用 json 格式 。必须以左大括号 { 开头,并以右大括号 } 结尾。以下示例展示了其整体结构:

{
    "an_action"     : {"order":1,  "title":"Do Something", ...},
    "another_action": {"order":2,  "title":"Do Something Else", ...},
    "third_action"  : {"order":10, "title":"Do More Things", ...},
    //...
}

每行都有两部分:

  • 每行的第一个字符串是动作的名称。例如:"an_action"
  • 这一行的剩余部分包含了这个动作的参数。例如:"order", "title", "ctx", 等。

这里有关于它们的详细信息:

动作名称

动作名称必须是唯一的,否则可能会被其他使用了相同动作名称的模组覆盖。具体来说:

确保动作名称唯一的最简单方法是使用一个独特的前缀。例如:

{
    "extra-menus-mod_an_action"     : { ... },
    "extra-menus-mod_another_action": { ... },
    "extra-menus-mod_third_action"  : { ... },
    //...
}

动作参数

动作的参数控制着该动作的实际功能及其在菜单中的显示方式。以下是所有详细信息的表格:

特定车辆动作 具有一些特殊性,下文也将进行说明。

名称
必填
类型
默认值
描述
名称
title
必填
类型
string
默认值
描述
动作的简短名称,将显示在各种游戏菜单中
名称
desc
必填
类型
string
默认值
描述
详细描述,可用作工具提示,建议为一句话
名称
isBasic
必填
类型
boolean
默认值
true
描述
是否在 控制 > 绑定 菜单中默认显示(true),否则需要用户勾选“显示高级绑定”(false)
名称
cat (常规动作)
必填
类型
string
默认值
描述
名称
cat (特定车辆动作)
必填
类型
string
默认值
“vehicle_specific”
描述
名称
order
必填
类型
number
默认值
描述
影响动作在各种 UI 菜单中的显示顺序,1 为最先,更大的值(2, 3…)为随后
名称
isCentered
必填
类型
boolean
默认值
false
描述
如果值为 false,动作将产生 0 到 1 范围内的值(例如,可用于刹车踏板或手刹)。如果为 true,产生的值将在 -1 到 +1 范围内(例如,可用于方向盘,或用于改变相机高度)
名称
actionMap (regular actions)
必填
类型
string
默认值
“Normal”
描述

确定动作将分配到哪个 动作映射 。按优先级排序,最常见的动作映射是:

  • “Global” - 即使在 UI 有焦点时也能工作(适用于非常少的动作,例如 ALT+F4 绑定)
  • “Menu” - 当 “cat”(类别)为 “Menu” 时自动分配
  • “Normal” - 默认映射。此映射和下面的动作映射不会在触发相同控制的 Menu 动作时触发
  • “VehicleCommon” - 可能适用于多种车辆的动作。自动分配 IF 此动作上下文为 “vlua”
  • “VehicleSpecific” - 仅适用于当前活动车辆的动作。自动分配 IF 这是一个特定车辆的动作 .json 文件

可以指定自定义名称,并自动创建相应的动作映射。这对于模组想要快速激活/停用某些动作集等非常有用

名称
actionMap (vehicle-specific actions)
必填
类型
string
默认值
“VehicleSpecific”
描述
确定动作将分配到哪个 动作映射 。按优先级排序,最常见的动作映射是:
名称
ctx (regular actions)
必填
类型
string
默认值
描述

定义 onChange/onUp/onDown/onRelative 中定义的代码如何执行:

  • “ui” 用于用户界面 - javascript (异步)
  • “vlua” 用于活动车辆 - lua (异步)
  • “bvlua” 用于所有车辆 - lua (异步)
  • “elua” 用于游戏引擎 - lua (异步)
  • “tlua” 用于游戏引擎 - lua (同步)
  • “ts” 用于游戏引擎 - torquescript (同步)
名称
ctx (vehicle-specific actions)
必填
类型
string
默认值
“vlua”
描述
参见上面的描述
名称
  • onChange
  • onDown
  • onUp
  • onRelative
必填
类型
string
默认值
描述

指定在动作触发时执行哪个源代码。代码执行上下文定义在当前动作的 ctx 参数中

至少需要定义其中之一。它们触发的方式如下:

  • onChange: 当控制器位置改变时运行。支持:按键/按钮和轴
  • onDown: 当按键/按钮被按下时运行。支持:按键/按钮
  • onUp: 当按键/按钮被抬起时运行。支持:按键/按钮
  • onRelative: 当按住右键鼠标并移动鼠标时运行(除非你知道自己在做什么,否则不要使用)

动作类别

动作的类别是一个必需的参数,但其作用仅影响显示效果。

它将影响该动作在游戏内各种菜单(例如 选项控制 下的动作层级结构)中的显示位置。

要查看可用的类别列表,请参考以下文件:

lua/ge/extensions/core/input/categories.lua
上一次修订: 六月 2, 2026

还有其他问题?

加入我们的 Discord 服务器
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.