开发者控制台

适用于Unity的Amazon Input SDK

适用于Unity的Amazon Input SDK

通过适用于Unity的Amazon Input SDK,您可以向用户显示帮助对话框,解释如何用键盘和鼠标使用应用。那些通常不用键盘和鼠标与应用交互的用户将通过这项功能,获得愉悦而有益的体验。在遵照本指南之前,请确保您已在应用中启用键盘和鼠标支持。

如果您没有使用Unity,请参阅Amazon Input SDK

要求

适用于Unity的亚马逊Input SDK要求使用2021.3或更高的Unity编辑器版本。

将Input SDK添加到您的项目

此处可下载适用于Unity的Amazon Input SDK。

下载的内容中包括.unitypackage文件和一个示例应用。

将Input SDK .unitypackage文件导入您的Unity项目。请按照以下步骤操作:

  1. Assets(资产)菜单中,选择Import Package > Custom Package(导入程序包>自定义程序包)。
  2. 浏览并选择Amazon.Device.InputMapping-1.0.1.unitypackage
  3. 在随后的导入对话框中选择所有文件,然后单击Import(导入)。

如果您在Android的Unity项目中使用Gradle模板,您可能需要为Unity配置Gradle模板。要为Unity配置Gradle模板,请在Unity版本2019.3或更高版本中执行以下步骤。

  1. 转到Preferences(首选项)> External Tools(外部工具)。在Android部分,取消选中Gradle installed with Unity(随Unity安装Gradle),然后为您的项目选择所需的Gradle版本。建议使用版本5.6.4或更高版本。
  2. 转到Project settings(项目设置)> Player(播放器),选择Android选项卡,然后展开Publishing settings(发布设置)。在Build(构建)部分,单击Custom Launcher Gradle Template(自定义启动器Gradle模板)对应的复选框,如下图所示。
    Unity中的项目设置窗口。选中了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的Amazon 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的Amazon 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的Amazon Input SDK中一些API的介绍。有关完整的API参考,请参阅适用于Unity的Amazon 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。

输入

该类用于通过以下方法提供InputMappingClient

  • GetInputMappingClient():返回当前的InputMappingClient

TriggerHandler

该类提供一个显示帮助对话框的方法,并包含以下方法:

  • ShowHelp(string title):显示输入帮助对话框。使用以下参数。
    • title - 要在对话框上显示的应用程序的标题
  • ShowHelp(string title, UIMode uiMode):显示具有指定主题(浅色或深色)的输入帮助对话框。使用以下参数。
    • title - 要在对话框上显示的应用程序的标题
    • uiMode - 主题设置,有效值为UIMode.AUTOUIMode.LIGHTUIMode.DARK
  • SetUiMode(UIMode uiMode):设置对话框的主题。使用以下参数。
    • uiMode - 主题设置,有效值为UIMode.AUTOUIMode.LIGHTUIMode.DARK

UIMode

这是一个枚举,定义可用于设置帮助对话框主题的常量。常量包括:

  • AUTO - 沿用系统主题
  • DARK - 使用深色主题
  • LIGHT - 使用浅色主题

Last updated: 2023年9月7日