このガイドでは、最新の Input SDK を使用するように Unity ゲームを移行する方法について説明します。1.0.0 ベータ版 SDK は、以前の 0.0.4 プレビューから大幅に改善されています。可能な限り早期に以前のプレビューから移行してください。0.0.4 SDK は 2023 年 3 月まで引き続き機能します。
参照を更新する
Unity との名前の競合を回避するために、クラスに Play 接頭辞を付加しました。次のようなエラー メッセージが表示される場合:
エラー CS0246: タイプまたは名前空間名「InputMappingProvider」が見つかりませんでした(ディレクティブを使用していない、またはアセンブリ リファレンスが存在しない可能性があります)。
クラス名には Play 接頭辞を追加する必要があります。たとえば、InputMappingProvider は PlayInputMappingProvider になります。
各 InputAction を更新する
InputAction は、名前付きフィールドで新しい struct を作成するのではなく、PlayInputAction.Create の呼び出しで構築されるようになりました。
new InputAction を呼び出すコードを見つけます。
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
これを PlayInputAction.Create の呼び出しに置き換えます。
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
各 InputGroup を更新する
InputAction と同様に、InputGroup には PlayInputGroup.Create の呼び出しが含まれるようになりました。struct を手動で入力する必要はありません。
つまり、new InputGroup への呼び出しを見つける必要があります。
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
これを PlayInputGroup.Create の呼び出しに置き換えます。
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
InputMap を更新する
InputMap は、新しい構造体を作成する代わりに PlayInputMap.Create も使用します。
new InputMap の呼び出しを見つけます。
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
これを PlayInputMap.Create の呼び出しに置き換えます。
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
PlayInputMappingClient メソッドの名前を変更する
PlayInputMappingClient について、RegisterInputMappingProvider の名前を SetInputMappingProvider に変更しました。
そのため、RegisterInputMappingProvider の呼び出しを見つけます。
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
これを SetInputMappingProvider の呼び出しに置き換えます。
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
UnregisterInputMappingProvider の名前も ClearInputMappingProvider に変更され、以前に登録した InputMappingProvider はパラメータとして不要になりました。
UnregisterInputMappingProvider の呼び出しを見つけます。
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
これを ClearInputMappingProvider に置き換えます。
PlayInput.GetInputMappingClient().ClearInputMappingProvider();