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