इस गाइड में बताया गया है कि नए इनपुट SDK टूल का इस्तेमाल करने के लिए, अपने Unity गेम को कैसे माइग्रेट करें. 1.0.0-बीटा SDK टूल में, 0.0.4 के पिछले बीटा वर्शन के मुकाबले काफ़ी सुधार किए गए हैं. आपको पुरानी झलक से जल्द से जल्द माइग्रेट कर लेना चाहिए. SDK टूल का 0.0.4 वर्शन मार्च 2023 तक काम करता रहेगा.
रेफ़रंस अपडेट करना
Unity के साथ होने वाली समस्याओं को नाम देने से बचने के लिए, क्लास में Play
प्रीफ़िक्स का इस्तेमाल किया गया है.
जब भी आपको गड़बड़ी का ऐसा मैसेज दिखे:
गड़बड़ी CS0246: टाइप या नेमस्पेस का नाम 'InputMappingProvider' नहीं मिला (क्या आपके पास using डायरेक्टिव या असेंबली का रेफ़रंस नहीं है?)
आपको क्लास के नाम में Play
प्रीफ़िक्स जोड़ना होगा. उदाहरण के लिए,
InputMappingProvider
, PlayInputMappingProvider
हो जाता है.
हर InputAction को अपडेट करना
InputAction
को अब नाम वाले फ़ील्ड के साथ नया struct
बनाने के बजाय, PlayInputAction.Create
को कॉल करके बनाया गया है.
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
, नया स्ट्रक्चर बनाने के बजाय 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();