跳到主要内容

! 创建硬件游戏手柄 (gamepad.connect)

该函数在 20260805 以后版本方可使用

声明

手柄对象, 错误信息 = gamepad.connect([ 属性 ])

参数

  • 属性 表型,可选参数,用于设置下列常用设备属性;代码块中的值为省略时的默认值
{
VendorID = 0x5858,
ProductID = 0x0007,
VersionNumber = 1,
Product = "XXTouch Gamepad",
Manufacturer = "XXTouch",
Transport = "USB",
}

还可以设置 SerialNumberLocationID;其它属性不保证生效。

返回值

  • 手柄对象 游戏手柄对象 或 nil,设备创建成功时返回新的手柄对象,失败时返回 nil
  • 错误信息 文本型,设备创建失败时的错误信息

说明

  • 每次调用都会返回新的独立手柄对象;不同对象的输入状态和生命周期互不影响
  • 手柄支持左右摇杆、方向键、数字按键 132,以及 menu 输入
  • 连接等待会让出当前 Lua 执行线程
  • 系统不支持该功能时,gamepad.connect 返回 nil, error
  • 连接成功只表示手柄对象已经可以调用;目标 App 是否识别手柄及其全部输入,取决于系统版本和 App 的手柄支持
  • Transport 只影响本机系统如何识别该手柄。设为 "Bluetooth""BluetoothLowEnergy" 不会建立蓝牙连接、广播或配对,也不会让手柄出现在其它设备的蓝牙列表中

示例

local pad, err = gamepad.connect({
Product = "XXTouch Gamepad",
})
assert(pad, err)

assert(pad:press("a"))
assert(pad:press("menu"))
assert(pad:down("left_shoulder"))
assert(pad:set_stick("left", 0.5, 1))
assert(pad:set_dpad(1, 0))
assert(pad:up("left_shoulder"))
assert(pad:reset())

pad:disconnect()