開発者コンソール

Unity用Amazon Input SDK

Unity用Amazon Input SDK

Unity用Amazon Input SDKを使用すると、キーボードとマウスでアプリを操作する方法を説明するヘルプダイアログをユーザーに表示できます。これにより、通常はアプリの操作にキーボードとマウスを使用しないユーザーにも快適で便利なエクスペリエンスを提供できます。このガイドに従う前に、アプリでキーボードとマウスのサポートが有効になっていることを確認してください。

Unityを使用していない場合は、Amazon Input SDKを参照してください。

要件

Unity用Amazon Input SDKを使用するには、Unityエディターのバージョン2021.3以上が必要です。

Input SDKをプロジェクトに追加する方法

以下からUnity用Amazon Input SDKをダウンロードします。

ダウンロードには、.unitypackageファイルとサンプルアプリが含まれています。

UnityプロジェクトにInput SDKの.unitypackageファイルをインポートします。手順は以下のとおりです。

  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] チェックボックスをオフにし、プロジェクトに必要なGradleのバージョンを選択します。バージョン5.6.4以降を推奨します。
  2. [Project settings] > [Player] に移動し、Androidのタブをクリックして、[Publishing settings] を展開します。[Build] セクションで、次の図に示すように [Custom Launcher Gradle Template] チェックボックスをオンにします。
    Unityの [Project Settings] ウィンドウ。[Custom Launcher Gradle Template] チェックボックスをオンにします。
    画像をクリックすると拡大表示されます

必要な以下の依存関係を、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では、次の図に示すように、キーイベントとマウスクリックを入力アクションにマッピングし、それらのアクションを入力グループにグループ化して、入力グループから入力マップを作成します。

キーボードからの入力は入力アクションにマッピングされます。複数の入力アクションがグループ化され、1つの入力グループを形成します。複数の入力グループが1つの入力マップを形成します。

入力アクションの定義

入力アクションとは、アプリのアクションに対応するイベントです。入力アクションは、キーまたはキーの組み合わせにマッピングできます。次の例では、「Jump」アクションがSpaceキーにマッピングされます。

var jump = InputAction.Create(
        "Jump",
        Actions.JUMP, // ここでのActionsはゲームのアクションを表す列挙体
        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;
    }
}

入力マッピングプロバイダーの登録

一度にアクティブにできる入力マップは1つだけです。ユーザーがヘルプ画面にアクセスすると、現在アクティブな入力マップが表示されます。入力マッピングプロバイダーをアクティブな入力マッピングプロバイダーとして登録するには、次の例のようにInput静的クラスを使用します。

 void Start()
{
    var _inputMappingClient = Input.GetInputMappingClient();
    _inputMappingClient.SetInputMappingProvider(new CustomInputMappingProvider());
}

ヘルプ画面の表示

ヘルプ画面を表示できるようにするために、Amazonアプリストアでは、クリック時にヘルプ画面を開く視覚要素をユーザーに表示することをお勧めします。この視覚的なインジケーターは、ゲームウィンドウ内に配置することも、設定ページや管理ページなどの別の画面に配置することもできます。ヘルプ画面を表示するには、次のようにTriggerHandler.ShowHelp()メソッドを使用します。

TriggerHandler.ShowHelp("マイアプリ");

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オブジェクトを返します。InputGroupMouseSettingsと共に使用して、InputMapを作成します。

MouseSettings

MouseSettings.Create(bool allowMouseSensitivityAdjustment, bool invertMouseMovement)

MouseSettingsオブジェクトは、感度の調整と軸の反転を表すboolean型のマウス設定を格納します。このオブジェクトは、静的メソッドのMouseSettings.Create()を使用して作成されます。

MouseSettings.Create()メソッドは新しいMouseSettingsオブジェクトを返します。MouseSettingsInputGroupと共に使用して、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):そのInputMappingClientのインスタンスにInputMappingProviderを割り当てます。
  • ClearInputMappingProvider():現在割り当てられているInputMappingProviderを削除し、nullに設定します。

Input

このクラスは、以下のメソッドを使用して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: 2024年3月5日