适用于Unity的Amazon Input SDK
通过适用于Unity的亚马逊Input SDK,您可以向用户显示帮助对话框,解释如何用键盘和鼠标使用应用。那些通常不用键盘和鼠标与应用交互的用户将通过这项功能,获得愉悦而有益的体验。在遵照本指南之前,请确保您已在应用中启用键盘和鼠标支持。
如果您没有使用Unity,请参阅亚马逊Input SDK。
要求
适用于Unity的亚马逊Input SDK要求使用2021.3或更高的Unity编辑器版本。
将Input SDK添加到您的项目
此处可下载适用于Unity的亚马逊Input SDK。
下载的内容中包括.unitypackage文件和一个示例应用。
将Input SDK .unitypackage文件导入您的Unity项目。请按照以下步骤操作:
- 在Assets(资产)菜单中,选择Import Package(导入程序包)> Custom Package(自定义程序包)。
- 浏览并选择Amazon.Device.InputMapping-1.0.1.unitypackage。
- 在随后的导入对话框中选择所有文件,然后单击Import(导入)。
如果您在Android的Unity项目中使用Gradle模板,您可能需要为Unity配置Gradle模板。要为Unity配置Gradle模板,请在Unity版本2019.3或更高版本中执行以下步骤。
- 转到Preferences(首选项)> External Tools(外部工具)。在Android部分,取消选中Gradle installed with Unity(随Unity安装Gradle),然后为您的项目选择所需的Gradle版本。建议使用版本5.6.4或更高版本。
- 转到Project settings(项目设置)> Player(播放器),选择Android选项卡,然后展开Publishing settings(发布设置)。在Build(构建)部分,单击Custom Launcher Gradle Template(自定义启动器Gradle模板)对应的复选框,如下图所示。
在Gradle启动器模板文件的依赖项部分添加以下所需的依赖项,或者如果将Unity项目导出为Android项目,则添加到Android项目中。
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
implementation 'com.android.support:recyclerview-v7:28.0.0'
创建输入映射
通过适用于Unity的亚马逊Input SDK,您可以将关键事件和鼠标点击映射到输入操作,将这些操作划分到输入组中,并从输入组创建输入映射,如下图所示。
定义输入操作
输入操作是与应用操作对应的事件。输入操作可以映射到一个键或键的组合。在下面的示例中,Jump(跳动)操作被映射到空格键。
var jump = InputAction.Create(
"Jump",
Actions.JUMP, //其中的操作是游戏动作的枚举
InputControls.Create(
new[]
{
AndroidKeyCode.KEYCODE_SPACE
},
null
)
);
在这里,Move Left(左移)操作映射到数字小键盘上的左键,Move Right(右移)映射到数字小键盘上的右键。
var moveLeft = InputAction.Create(
"Move Left",
Actions.MOVE_LEFT,
InputControls.Create(
new[]
{
AndroidKeyCode.KEYCODE_NUMPAD_LEFT
},
null
)
);
var moveRight = InputAction.Create(
"Move Right",
Actions.MOVE_RIGHT,
InputControls.Create(
new[]
{
AndroidKeyCode.KEYCODE_NUMPAD_RIGHT
},
null
)
);
var freeLook = InputAction.Create(
"Free look",
Actions.FREE_LOOK,
InputControls.Create(
null,
new[]
{
MouseAction.MouseMovement
}
)
);
定义输入组
输入组是由多个输入操作组成的一组。输入组具有组标签和属于该组的一系列输入操作。每个InputAction
必须与InputGroup
关联。以下示例显示了使用上一节中定义的输入操作创建的Basic Movement(基本移动)输入组。
InputGroup movementInputGroup = InputGroup.Create("Basic Movement",
new[]
{
jump, moveLeft, moveRight, freelook
}
);
构建输入映射
输入映射是应用的输入组的集合。输入映射还包含适用于应用的鼠标设置。在定义了所有输入操作并将它们划分到输入组之后,如本例所示创建输入映射。
var inputMap = InputMap.Create(
new[]
{
movementInputGroup
},
MouseSettings.Create(false, true)
);
创建输入映射提供方
要根据请求提供输入映射,请实现InputMappingProvider
接口。当用户请求帮助屏幕时,适用于Unity的亚马逊Input SDK会引用输入映射提供方。
private class CustomInputMappingProvider : InputMappingProvider
{
public InputMap OnProvideInputMap()
{
//创建输入映射
return inputMap;
}
}
注册输入映射提供方
一次只能有一个有效的输入映射。当用户访问帮助屏幕时,会向他们显示当前有效的输入映射。通过input
静态类将输入映射提供方注册为有效输入映射提供方,如以下示例所示。
void Start()
{
var _inputMappingClient = Input.GetInputMappingClient();
_inputMappingClient.SetInputMappingProvider(new CustomInputMappingProvider());
}
显示帮助屏幕
要显示帮助屏幕,亚马逊应用商店建议向用户显示一个视觉元素,在单击该元素时会打开帮助屏幕。您可以将视觉指示器放置在游戏窗口中,也可以放置在单独的屏幕中,例如首选项或控件页面。使用TriggerHandler.ShowHelp()
方法显示帮助屏幕,如以下所示。
TriggerHandler.ShowHelp("My App");
API参考
浏览本节,了解有关适用于Unity的亚马逊Input SDK中一些API的介绍。有关完整的API参考,请参阅适用于Unity的亚马逊Input SDK的API参考。
InputControls
InputControls.Create(IList<int> androidKeycodes, IList<int> mouseActions)
InputControls
对象包含一系列键盘按键和一系列鼠标操作。该对象使用静态方法InputControls.Create()
创建。
InputControls.Create()
方法返回新的InputControls
对象。使用InputControls
对象创建InputAction
。
InputAction
InputAction.Create(string actionLabel, int uniqueId, InputControls inputControls)
InputAction
对象包含标签、唯一的ID和InputControls
对象。该对象使用静态方法InputAction.Create()
创建。
InputAction.Create()
方法返回新的InputAction
对象。使用InputAction
对象创建InputGroup
。
InputGroup
InputGroup.Create(string groupLabel, IList<InputAction> inputActions)
InputGroup
对象包含标签和一系列InputAction
对象。该对象使用静态方法InputGroup.Create()
创建。
InputGroup.Create()
方法返回新的InputGroup
对象。将InputGroup
结合MouseSettings
使用,创建InputMap
。
MouseSettings
MouseSettings.Create(bool allowMouseSensitivityAdjustment, bool invertMouseMovement)
MouseSettings
对象包含可调整灵敏度和反转轴的布尔值鼠标设置。该对象使用静态方法MouseSettings.Create()
创建。
MouseSettings.Create()
方法返回新的MouseSettings
对象。将MouseSettings
结合InputGroup
使用,创建InputMap
。
InputMap
InputMap.Create(IList<InputGroup> inputGroups, MouseSettings mouseSettings)
InputMap
对象包含一系列InputGroup
对象,以及一个MouseSettings
对象。该对象使用静态方法InputMap.Create()
创建。
InputMap.Create()
方法返回新的InputMap
对象。从您的InputMappingProvider
实现返回InputMap
。
InputMappingProvider
InputMappingProvider
接口提供onProvideInputMap()
方法。在您的实现中,覆盖该方法以返回InputMap
。当用户访问帮助屏幕时,将显示InputMap
数据。
InputMappingClient
InputMappingClient
可让您管理InputMappingProvider
并提供以下方法:
SetInputMappingProvider(InputMappingProvider inputMappingProvider)
:将InputMappingProvider
分配至InputMappingClient
的该实例。ClearInputMappingProvider()
:删除当前分配的InputMappingProvider
并使其为null。
Input
该类用于通过以下方法提供InputMappingClient
:
GetInputMappingClient()
:返回当前的InputMappingClient
。
TriggerHandler
该类提供一个显示帮助对话框的方法,并包含以下方法:
ShowHelp(string title)
:显示输入帮助对话框。使用以下参数。title
- 要在对话框上显示的应用程序的标题
ShowHelp(string title, UIMode uiMode)
:显示具有指定主题(浅色或深色)的输入帮助对话框。使用以下参数。title
- 要在对话框上显示的应用程序的标题uiMode
- 主题设置,有效值为UIMode.AUTO
、UIMode.LIGHT
、UIMode.DARK
SetUiMode(UIMode uiMode)
:设置对话框的主题。使用以下参数。uiMode
- 主题设置,有效值为UIMode.AUTO
、UIMode.LIGHT
、UIMode.DARK
UIMode
这是一个枚举,定义可用于设置帮助对话框主题的常量。常量包括:
AUTO
- 沿用系统主题DARK
- 使用深色主题LIGHT
- 使用浅色主题
Last updated: 2024年3月5日