Hướng dẫn này mô tả cách di chuyển trò chơi Unity của bạn để sử dụng SDK Input mới nhất. SDK 1.0.0-beta có những cải tiến đáng kể so với bản xem trước 0.0.4 trước đó. Bạn nên di chuyển từ các bản xem trước trước đó sớm nhất có thể. SDK 0.0.4 sẽ tiếp tục hoạt động đến hết tháng 3 năm 2023.
Cập nhật tài liệu tham khảo
Các lớp sẽ nhận được tiền tố Play
để tránh tình trạng xung đột tên với Unity.
Bất cứ khi nào bạn thấy một thông báo lỗi tương tự như:
lỗi CS0246: Không tìm thấy loại hoặc không gian tên "InputMappingProvider" (liệu bạn có đang thiếu lệnh tham chiếu hay một tổ hợp tham chiếu không?)
bạn phải thêm tiền tố Play
vào tên lớp. Ví dụ: InputMappingProvider
trở thành PlayInputMappingProvider
.
Cập nhật từng InputAction
InputAction
hiện được tạo bằng một lệnh gọi PlayInputAction.Create
thay vì tạo struct
mới với các trường đã được đặt tên.
Định vị mọi đoạn mã gọi new InputAction
:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
Sau đó thay thế chúng bằng một lệnh gọi đến PlayInputAction.Create
:
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
Cập nhật từng InputGroup
Giống như InputAction
, InputGroup
hiện có lệnh gọi PlayInputGroup.Create
thay vì yêu cầu bạn điền struct
theo cách thủ công.
Điều này có nghĩa là bạn nên xác định vị trí của mọi lệnh gọi đến new InputGroup
:
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
Sau đó thay thế chúng bằng một lệnh gọi đến PlayInputGroup.Create
:
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
Cập nhật InputMap
InputMap
cũng sử dụng PlayInputMap.Create
thay vì tạo một cấu trúc mới.
Định vị mọi lệnh gọi đến new InputMap
:
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
Sau đó thay thế chúng bằng một lệnh gọi đến PlayInputMap.Create
:
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
Đổi tên phương thức PlayInputMappingClient
Đối với PlayInputMappingClient
, RegisterInputMappingProvider
đã được đổi tên thành SetInputMappingProvider
.
Vì vậy, hãy xác định vị trí mọi lệnh gọi đến RegisterInputMappingProvider
:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
Sau đó thay thế chúng bằng một lệnh gọi đến SetInputMappingProvider
:
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
UnregisterInputMappingProvider
cũng đã được đổi tên thành
ClearInputMappingProvider
, đồng thời không còn yêu cầu tham số
InputMappingProvider
mà bạn đã đăng ký trước đó nữa.
Định vị mọi lệnh gọi đến UnregisterInputMappingProvider
:
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
Và thay thế chúng bằng ClearInputMappingProvider
:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();