开发者控制台

适用于Unity输入系统的亚马逊Input SDK

适用于Unity输入系统的亚马逊Input SDK

Unity提供了输入系统程序包,您可以使用该程序包将设备输入控件映射到应用中的操作。适用于Unity输入系统的亚马逊Input SDK是一个与Unity输入系统配合使用的附加插件。此插件使用您在Unity输入系统中定义的操作映射来向用户显示帮助对话框,这些对话框描述了如何通过键盘和鼠标来使用您的应用。

开始使用

按照以下步骤设置适用于Unity输入系统的亚马逊Input SDK。

  1. 将适用于Unity的亚马逊Input SDK添加到您的项目。有关详细信息,请参照将Input SDK添加到您的项目中的说明。
  2. 如果您还没有在您的项目中设置Unity输入系统,请完成该操作。有关说明,请参阅Unity的输入系统安装指南

  3. 在您的应用中,创建操作映射。有关说明,请参阅Unity的输入系统操作文章。

  4. 将适用于Unity输入系统的亚马逊Input SDK插件导入您的项目。
    1. Assets(资产)菜单中,选择Import Package(导入程序包)> Custom Package(自定义程序包)。
    2. 浏览并选择 Amazon.Device.InputMapping.InputSystemCompatibility-1.0.0.unitypackage
    3. 在随后的导入对话框中选择所有文件,然后单击Import(导入)。

要使用适用于Unity输入系统的亚马逊Input SDK,请首先在应用中注册输入映射提供方,然后显示帮助屏幕。

注册输入映射提供方

一次只能有一个有效的输入映射。当用户访问帮助屏幕时,会向他们显示当前有效的输入映射。通过input静态类将输入映射提供方注册为有效输入映射提供方,如以下示例所示。

void Start()
{
    var _inputMappingClient = Input.GetInputMappingClient();
    _inputMappingClient.SetInputMappingProvider(
        new UnityInputSystemMappingProvider(playerInput.currentActionMap)
    );
}

显示帮助屏幕

要显示帮助屏幕,亚马逊应用商店建议向用户显示一个视觉元素,在单击该元素时会打开帮助屏幕。您可以将视觉指示器放置在游戏窗口中,也可以放置在单独的屏幕中,例如首选项或控件页面。使用TriggerHandler.ShowHelp()方法显示帮助屏幕,如以下所示。

TriggerHandler.ShowHelp("Title of the app");

使用示例

以下代码显示了示例,说明如何通过Unity的输入系统使用适用于Unity的亚马逊Input SDK。

using UnityEngine;
using UnityEngine.InputSystem;
using UnityInput = UnityEngine.Input;
using Amazon.Device.InputMapping;

public class Football : MonoBehaviour
{
    public Rigidbody2D myRidigBody;
    private PlayerInput playerInput;

    void Start()
    {
        InitializeInput();
    }

    //每帧调用更新一次
    void Update()
    {
        if (UnityInput.GetKeyDown(KeyCode.Space))
        {
            myRidigBody.velocity = Vector2.up * 10;
        }
        if (UnityInput.GetKeyDown(KeyCode.Tab))
        {
            myRidigBody.velocity = Vector2.up * 10;
        }
        if (UnityInput.GetKeyDown(KeyCode.Return))
        {
            Debug.Log("Showing help...");
            TriggerHandler.ShowHelp("My App");
        }

    }
    void InitializeInput()
    {
        var imc = Amazon.Device.InputMapping.Input.GetInputMappingClient();

        //如果操作映射是通过代码创建的

        var map = new InputActionMap("Gameplay");
        var lookAction = map.AddAction("look");
        lookAction.AddBinding("<Gamepad>/leftStick");
        imc.SetInputMappingProvider(new UnityInputSystemMappingProvider(map));


        //如果操作映射是通过InputSystem UI创建的

        //如果为InputActions生成了C#类
        //方法1
        InputActionAsset asset = new @Custominputs().asset;
        imc.SetInputMappingProvider(new UnityInputSystemMappingProvider(
            asset.actionMaps[0]
        ));
        //方法2
        InputActionMap actionMap = new @Custominputs().Player;
        imc.SetInputMappingProvider(new UnityInputSystemMappingProvider(
            actionMap
        ));


        //如果未生成C#类
        //推荐方法1: 因为自动选择了在PlayerInput组件中
        //选择的当前ActionMap
        playerInput = GetComponent<PlayerInput>();
        imc.SetInputMappingProvider(new UnityInputSystemMappingProvider(
            playerInput.currentActionMap
        ));
    }
}

Last updated: 2024年3月5日