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ファイルをインポートします。手順は以下のとおりです。
- [Assets] メニューから [Import Package] > [Custom Package] を選択します。
- Amazon.Device.InputMapping-1.0.1.unitypackageを参照して選択します。
- インポートダイアログが表示されたら、すべてのファイルを選択し、[Import] をクリックします。
Android向けのUnityプロジェクトでGradleテンプレートを使用している場合、UnityのGradleテンプレートを構成できます。UnityのGradleテンプレートを構成するには、Unityバージョン2019.3以降で以下の手順を実行します。
- [Preferences] > [External Tools] に移動します。[Android] セクションで、[Gradle installed with Unity] チェックボックスをオフにし、プロジェクトに必要なGradleのバージョンを選択します。バージョン5.6.4以降を推奨します。
- [Project settings] > [Player] に移動し、Androidのタブをクリックして、[Publishing settings] を展開します。[Build] セクションで、次の図に示すように [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では、次の図に示すように、キーイベントとマウスクリックを入力アクションにマッピングし、それらのアクションを入力グループにグループ化して、入力グループから入力マップを作成します。
入力アクションの定義
入力アクションとは、アプリのアクションに対応するイベントです。入力アクションは、キーまたはキーの組み合わせにマッピングできます。次の例では、「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
オブジェクトを返します。InputGroup
をMouseSettings
と共に使用して、InputMap
を作成します。
MouseSettings
MouseSettings.Create(bool allowMouseSensitivityAdjustment, bool invertMouseMovement)
MouseSettings
オブジェクトは、感度の調整と軸の反転を表すboolean型のマウス設定を格納します。このオブジェクトは、静的メソッドの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)
:そのInputMappingClient
のインスタンスにInputMappingProvider
を割り当てます。ClearInputMappingProvider()
:現在割り当てられているInputMappingProvider
を削除し、nullに設定します。
Input
このクラスは、以下のメソッドを使用してInputMappingClient
を提供するために使用されます。
GetInputMappingClient()
:現在のInputMappingClient
を返します。
TriggerHandler
このクラスは、ヘルプダイアログを表示するメソッドを提供します。以下のメソッドがあります。
ShowHelp(string title)
:入力ヘルプダイアログボックスを表示します。次のパラメーターを受け取ります。title
- ダイアログに表示するアプリのタイトル
ShowHelp(string title, UIMode uiMode)
:指定されたテーマ(ライトまたはダーク)で入力のヘルプダイアログボックスを表示します。次のパラメーターを受け取ります。title
- ダイアログに表示するアプリのタイトルuiMode
- テーマの設定。有効な値はUIMode.AUTO
、UIMode.LIGHT
、UIMode.DARK
SetUiMode(UIMode uiMode)
:ダイアログボックスのテーマを設定します。次のパラメーターを受け取ります。uiMode
- テーマの設定。有効な値はUIMode.AUTO
、UIMode.LIGHT
、UIMode.DARK
UIMode
これは、ヘルプダイアログでテーマを設定するために使用できる定数を定義する列挙型です。定数は以下のとおりです。
AUTO
- システムテーマに従いますDARK
- ダークテーマを使用しますLIGHT
- ライトテーマを使用します
Last updated: 2024年3月5日