1.0.0 ベータ版 Input SDK に移行する

このガイドでは、最新の Input SDK を使用するように Unity ゲームを移行する方法について説明します。1.0.0 ベータ版 SDK は、以前の 0.0.4 プレビューから大幅に改善されています。可能な限り早期に以前のプレビューから移行してください。0.0.4 SDK は 2023 年 3 月まで引き続き機能します。

参照を更新する

Unity との名前の競合を回避するために、クラスに Play 接頭辞を付加しました。次のようなエラー メッセージが表示される場合:

エラー CS0246: タイプまたは名前空間名「InputMappingProvider」が見つかりませんでした(ディレクティブを使用していない、またはアセンブリ リファレンスが存在しない可能性があります)。

クラス名には Play 接頭辞を追加する必要があります。たとえば、InputMappingProviderPlayInputMappingProvider になります。

各 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();