1.0.0-बीटा इनपुट SDK टूल पर माइग्रेट करें

इस गाइड में बताया गया है कि नए इनपुट 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();