适用于Unity输入系统的亚马逊Input SDK
适用于Unity输入系统的亚马逊Input SDK
重要须知: 2025年3月5日后,Windows 11上的亚马逊应用商店将不再受支持。请阅读博客文章,了解更多相关信息。
Unity提供了输入系统程序包,您可以使用该程序包将设备输入控件映射到应用中的操作。适用于Unity输入系统的亚马逊Input SDK是一个与Unity输入系统配合使用的附加插件。此插件使用您在Unity输入系统中定义的操作映射来向用户显示帮助对话框,这些对话框描述了如何通过键盘和鼠标来使用您的应用。
开始使用
按照以下步骤设置适用于Unity输入系统的亚马逊Input SDK。
- 将适用于Unity的亚马逊Input SDK添加到您的项目。有关详细信息,请参照将Input SDK添加到您的项目中的说明。
重要须知: 您不需要通过亚马逊Input SDK API创建输入映射。将Input SDK程序包添加到应用后,请继续执行这些步骤。
-
如果您还没有在您的项目中设置Unity输入系统,请完成该操作。有关说明,请参阅Unity的输入系统安装指南。
-
在您的应用中,创建操作映射。有关说明,请参阅Unity的输入系统操作文章。
- 将适用于Unity输入系统的亚马逊Input SDK插件导入您的项目。
提示: 适用于Unity输入系统的亚马逊Input SDK插件包含在步骤1中您所下载的适用于Unity的亚马逊Input SDK中。
- 在Assets(资产)菜单中,选择Import Package(导入程序包)> Custom Package(自定义程序包)。
- 浏览并选择 Amazon.Device.InputMapping.InputSystemCompatibility-1.0.0.unitypackage 。
- 在随后的导入对话框中选择所有文件,然后单击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日