此函数可用于在允许它的目标上设置游戏手柄映射。你提供要设置的游戏手柄的 “插槽” 索引,然后提供应使用 SDL 格式创建的映射字符串,其中包含以下字段:
<guid>,<description>,platform:<platform-name>,<bindings>
应包含在每个字段中的详细信息包括:
- guid - 一串数字和字母,用于唯一标识设备类型(可以使用 gamepad_get_guid() 函数检索
- description - 设备的 Ascii 描述(可以使用 gamepad_get_description() 函数检索
- platform-name - 将是 “platform:android”、“platform:windows”、“linux” 或 “mac”(注意 当你调用此函数这将自动附加到字符串上,因此在构造自己的映射字符串时不需要提供它)
- bindings - 由 ',' 分隔的一组条目,用于将实际输入绑定到特定的 GML 常量
逗号分隔的条目列表遵循每个条目的特定格式:
<abstract-gp-name>:<value-binding>
这里 <value-binding>(即:直接 direct 手柄输入)可以是以下任何一种:
- a<N> - 这表示游戏手柄的轴,其中 <N> 是从 0 到 gamepad_axis_count() -1 的一个轴
- b<N> - 这表示游戏手柄的一个按钮,其中 <N> 是从 0 到 gamepad_button_count() -1 的按钮之一
- h<N>.<mask> - 这表示游戏手柄的帽子,其中 <N> 代表从 0 到 gamepad_hat_count() -1的游戏帽,<mask> 将为 1、2、4 或 8。
每个输入值都应绑定到 SDL 名称,该名称表示为 < abstract-gp-name>,后者又绑定到 GML 常量。下表显示了 SDL 名称与 GameMaker Studio 2 常量之间的等效性:
SDL Name GML Name a gp_face1 b gp_face2 x gp_face3 y gp_face4 左肩 gp_shoulderl 左触发器 gp_shoulderlb 右肩 gp_shoulderr 右触发器 gp_shoulderrb guide gp_select start gp_start leftstick gp_stickl rightstick gp_stickr dpup gp_padu dpdown gp_padl dpleft gp_padr dpright gp_padd leftx gp_axislh lefty gp_axislv rightx gp_axisrh righty gp_axisrv
构建映射字符串后,它应如下所示:"050000005e040000fd020000ffff3f00,Xbox Wireless Controller,a:b0,b:b1,start:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:android"
gamepad_test_mapping(index, mapping_string);
参数 | 描述 |
---|---|
index | 设置哪个游戏手柄 “插槽” 索引。 |
colour | 要使用的映射字符串(有关详细信息,请参阅说明)。 |
N/A(无返回值)
var mapping = gamepad_get_guid(global.padIndex) + "," + gamepad_get_description(global.padIndex);
var len = array_length_1d(global.PadInstances);
for( i = 0; i < len; i += 2)
{
var left = global.PadInstances[i];
var right = global.PadInstances[i+1];
mapping += "," + left.sdlLabel + ":" + right.binding;
}
gamepad_test_mapping(global.padIndex, mapping);
上面的代码将循环遍历许多实例,并使用它们包含的不同变量的值来创建映射字符串,然后将其设置为在给定插槽索引中的游戏手柄上使用。