คู่มือนี้อธิบายวิธีย้ายข้อมูลเกม Unity เพื่อใช้ Input SDK เวอร์ชันล่าสุด SDK เวอร์ชัน 1.0.0-beta มีการปรับปรุงที่สำคัญกว่าเวอร์ชันตัวอย่าง 0.0.4 ก่อนหน้า คุณควรย้ายข้อมูลจากเวอร์ชันตัวอย่างก่อนหน้าโดยเร็วที่สุด SDK 0.0.4 จะยังคงทำงานต่อไปจนถึงเดือนมีนาคม 2023
อัปเดตข้อมูลอ้างอิง
คลาสได้รับคำนำหน้า Play เพื่อหลีกเลี่ยงการตั้งชื่อที่ซ้ำซ้อนกับ Unity
เมื่อใดก็ตามที่คุณเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้
ข้อผิดพลาด CS0246: ไม่พบชื่อประเภทหรือเนมสเปซ "InputMappingProvider" (คุณไม่มีคำสั่ง using หรือการอ้างอิงแอสเซมบลีใช่ไหม)
คุณต้องเพิ่มคำนำหน้า Play ให้กับชื่อคลาส เช่น
InputMappingProvider จะกลายเป็น PlayInputMappingProvider
อัปเดต InputAction แต่ละรายการ
InputAction สร้างขึ้นโดยใช้การเรียกไปยัง PlayInputAction.Create แทนการสร้าง struct ใหม่ที่มีฟิลด์ที่ตั้งชื่อไว้
ค้นหารหัสที่เรียกใช้ 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 แต่ละรายการ
ตอนนี้ InputGroup มีการเรียกใช้ PlayInputGroup.Create เช่นเดียวกับ InputAction
แทนที่จะกำหนดให้คุณกรอก 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 ด้วยแทนที่จะสร้าง struct ใหม่
ค้นหาการโทรไปยัง 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();