इस गाइड में, Unity गेम को नए Input SDK का इस्तेमाल करने के लिए माइग्रेट करने का तरीका बताया गया है. 1.0.0-beta SDK टूल में, पिछले 0.0.4 वर्शन की तुलना में काफ़ी सुधार किए गए हैं. आपको पहले से उपलब्ध झलक वाली सुविधाओं से जल्द से जल्द माइग्रेट कर लेना चाहिए. 0.0.4 एसडीके मार्च 2023 तक काम करता रहेगा.
रेफ़रंस अपडेट करना
Unity के साथ नाम के टकराव से बचने के लिए, क्लास को Play प्रीफ़िक्स मिला है.
जब भी आपको इस तरह का गड़बड़ी का मैसेज दिखे:
error CS0246: The type or namespace name 'InputMappingProvider' could not be found (are you missing a using directive or an assembly reference?)
आपको क्लास के नाम में 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 को अपडेट करें
InputAction की तरह, अब InputGroup में भी PlayInputGroup.Create कॉल की सुविधा उपलब्ध है. इसके लिए, आपको 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, नई struct बनाने के बजाय PlayInputMap.Create का भी इस्तेमाल करता है.
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();