Unity Input System用Amazon Input SDK
UnityにはInput Systemパッケージが用意されており、これを使用すると、デバイスの入力コントロールをアプリ内のアクションにマッピングできます。Unity Input System用Amazon Input SDKは、Unity Input Systemと連携する追加プラグインです。このプラグインは、Unity Input Systemで定義したアクションマップを使用して、キーボードとマウスでアプリを操作する方法を説明するヘルプダイアログをユーザーに表示します。
開始の手順
Unity Input System用Amazon Input SDKをセットアップするには、次の手順に従います。
- プロジェクトにUnity用Amazon Input SDKを追加します。詳細については、Input SDKをプロジェクトに追加する方法の手順に従ってください。
重要: Amazon Input SDK APIを使用して入力マップを作成する必要はありません。アプリにInput SDKパッケージを追加したら、以下の手順に進んでください。
-
プロジェクトにまだUnity Input Systemを設定していない場合は設定します。手順については、UnityのInput Systemのインストールガイドを参照してください。
-
アプリ内でアクションマップを作成します。手順については、UnityのInput SystemのActionに関する記事を参照してください。
- プロジェクトにUnity Input System用Amazon Input SDKプラグインをインポートします。
ヒント: Unity Input System用Amazon Input SDKプラグインは、手順1でダウンロードしたUnity用Amazon Input SDKに含まれています。
- [Assets] メニューから [Import Package] > [Custom Package] を選択します。
- Amazon.Device.InputMapping.InputSystemCompatibility-1.0.0.unitypackage を参照して選択します。
- インポートダイアログが表示されたら、すべてのファイルを選択し、[Import] をクリックします。
Unity Input System用Amazon Input SDKを使用するには、まずアプリに入力マッピングプロバイダーを登録します。その後でヘルプ画面を表示できます。
入力マッピングプロバイダーの登録
一度にアクティブにできる入力マップは1つだけです。ユーザーがヘルプ画面にアクセスすると、現在アクティブな入力マップが表示されます。入力マッピングプロバイダーをアクティブな入力マッピングプロバイダーとして登録するには、次の例のようにInput
静的クラスを使用します。
void Start()
{
var _inputMappingClient = Input.GetInputMappingClient();
_inputMappingClient.SetInputMappingProvider(
new UnityInputSystemMappingProvider(playerInput.currentActionMap)
);
}
ヘルプ画面の表示
ヘルプ画面を表示できるようにするために、Amazonアプリストアでは、クリック時にヘルプ画面を開く視覚要素をユーザーに表示することをお勧めします。この視覚的なインジケーターは、ゲームウィンドウ内に配置することも、設定ページや管理ページなどの別の画面に配置することもできます。ヘルプ画面を表示するには、次のようにTriggerHandler.ShowHelp()
メソッドを使用します。
TriggerHandler.ShowHelp("アプリのタイトル");
使用例
以下のコードは、Unity用Amazon Input SDKでUnityのInput Systemを使用する方法の例を示しています。
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();
}
// Updateはフレームごとに1回呼び出されます。
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("ヘルプを表示します...");
TriggerHandler.ShowHelp("マイアプリ");
}
}
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を通じてアクションマップを作成した場合
// InputActionの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日