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