このガイドでは、最新の 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();