Bermigrasi ke Input SDK 1.0.0-beta

Panduan ini menjelaskan cara memigrasikan game Unity Anda untuk menggunakan SDK Input terbaru. SDK 1.0.0-beta memiliki peningkatan substansial dibandingkan pratinjau 0.0.4 sebelumnya. Anda harus sesegera mungkin bermigrasi dari pratinjau awal. SDK 0.0.4 akan terus berfungsi hingga Maret 2023.

Memperbarui referensi

Class menerima awalan Play untuk menghindari penamaan konflik dengan Unity. Setiap kali Anda melihat pesan error yang mirip dengan:

error CS0246: Jenis atau nama namespace 'InputMappingProvider' tidak dapat ditemukan (Anda tidak menggunakan perintah penggunaan atau referensi assembly?)

Anda harus menambahkan awalan Play ke nama class. Misalnya, InputMappingProvider menjadi PlayInputMappingProvider.

Mengupdate setiap InputAction

Sekarang InputAction dibuat dengan panggilan ke PlayInputAction.Create, bukan membuat struct baru dengan kolom bernama.

Cari kode apa pun yang memanggil new InputAction:

var driveAction = new InputAction
{
    ActionLabel = "Drive",
    UniqueId = (int)InputEventIds.DRIVE,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
    }
};

Lalu ganti dengan panggilan ke PlayInputAction.Create:

var driveAction = PlayInputAction.Create(
    "Drive",
    (int)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        null
    )
);

Mengupdate setiap InputGroup

Seperti InputAction, InputGroup sekarang memiliki panggilan PlayInputGroup.Create, daripada mengharuskan Anda mengisi struct secara manual.

Ini berarti Anda harus mencari semua panggilan ke new InputGroup:

var gameInputGroup = new InputGroup
{
    GroupLabel = "Game controls",
    InputActions = new List<InputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openStoreAction
    }
};

Lalu ganti dengan panggilan ke PlayInputGroup.Create:

var gameInputGroup = PlayInputGroup.Create(
    "Game controls",
    new List<PlayInputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openStoreAction
    }
);

Mengupdate InputMap

InputMap juga menggunakan PlayInputMap.Create, bukan membuat struct baru.

Cari semua panggilan ke new InputMap:

return new InputMap
{
    InputGroups = new List<InputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    MouseSettings = new MouseSettings
    {
        AllowMouseSensitivityAdjustment = false,
        InvertMouseMovement = false
    }
};

Lalu ganti dengan panggilan ke PlayInputMap.Create:

return PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

Mengganti nama metode PlayInputMappingClient

Untuk PlayInputMappingClient, nama RegisterInputMappingProvider telah diganti menjadi SetInputMappingProvider.

Jadi, cari panggilan ke RegisterInputMappingProvider:

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

Lalu ganti dengan panggilan ke SetInputMappingProvider:

PlayInputMappingClient inputMappingClient =
    Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);

Nama UnregisterInputMappingProvider juga telah diganti menjadi ClearInputMappingProvider dan tidak lagi memerlukan InputMappingProvider yang sebelumnya terdaftar sebagai parameter.

Cari semua panggilan ke UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

Lalu menggantinya dengan ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();