यूनिटी के नए इनपुट सिस्टम का अवलोकन

Unity में नया इनपुट सिस्टम गेम में इनपुट को संभालने के लिए एक अद्यतन, लचीला और अधिक सहज दृष्टिकोण प्रदान करता है। इस प्रणाली के साथ, डेवलपर्स गेम कंट्रोलर से लेकर वीआर हैंडसेट तक विभिन्न प्रकार के उपकरणों को पूरा कर सकते हैं, जिससे गेमप्ले अधिक गतिशील और इमर्सिव हो जाता है।

1. नई व्यवस्था क्यों

Unity में पारंपरिक इनपुट सिस्टम अपनी क्षमताओं में सीमित था और उतना विस्तार योग्य नहीं था। नया इनपुट सिस्टम एक एकीकृत एपीआई प्रदान करता है, जो पिछली सीमाओं को संबोधित करता है और आधुनिक गेम विकास के लिए उन्नत सुविधाएँ प्रदान करता है।

2. की स्थापना

नए इनपुट सिस्टम का उपयोग शुरू करने के लिए, इसे पहले Unity में पैकेज मैनेजर से इंस्टॉल करना होगा। एक बार जोड़ने के बाद, पुराने सिस्टम से संक्रमण के लिए स्क्रिप्ट और सेटिंग्स में कुछ समायोजन की आवश्यकता होती है।

3. प्रमुख विशेषताऐं

  • क्रियाएँ और बाइंडिंग: बटन या कुंजियों को सीधे संदर्भित करने के बजाय, डेवलपर्स क्रियाओं को परिभाषित करते हैं, और फिर उन क्रियाओं को विशिष्ट कुंजियों या बटनों से बाँध देते हैं।
  • डिवाइस विविधता: पारंपरिक गेमपैड से लेकर टचस्क्रीन और वीआर हैंडसेट तक कई डिवाइसों को आसानी से सपोर्ट करता है।
  • प्लेयर नियंत्रण: नियंत्रणों को रीबाइंडिंग के लिए एक अंतर्निहित तंत्र प्रदान करता है, जिससे खिलाड़ियों को पसंदीदा नियंत्रण स्थापित करने की अनुमति मिलती है।
  • उन्नत इवेंट हैंडलिंग:इवेंट को विभिन्न तरीकों से संसाधित किया जा सकता है, चाहे मतदान-आधारित या कॉलबैक-आधारित, अधिक नियंत्रण प्रदान करता है।

4. एक इनपुट क्रिया बनाना

इनपुट एक्शन एक नया परिसंपत्ति प्रकार है जो स्क्रिप्ट लिखे बिना इनपुट व्यवहार की परिभाषा की अनुमति देता है। एक बार बन जाने के बाद, इसे एक स्क्रिप्ट में डाला जा सकता है, जो गेमप्ले को सीधे प्लेयर इनपुट से जोड़ता है।

5. स्क्रिप्टिंग में कार्यान्वयन

  • नया इनपुट सिस्टम Unity स्क्रिप्टिंग वातावरण के साथ सहजता से एकीकृत होता है। पुराने 'Input.GetKey' या 'Input.GetAxis' तरीकों के बजाय, यह सिस्टम `क्रियाओं` का उपयोग करता है जिन्हें स्क्रिप्ट के भीतर बुलाया जा सकता है। नीचे दिए गए उदाहरण की जाँच करें:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

आइए ऊपर दिए गए कोड उदाहरण को तोड़ें:

  • नेमस्पेस: नई कार्यात्मकताओं का उपयोग करने के लिए 'UnityEngine.InputSystem' नेमस्पेस आवश्यक है।
  • 'moveInput': यह वेरिएबल इनपुट मानों को संग्रहीत करता है, जो आमतौर पर क्षैतिज और ऊर्ध्वाधर इनपुट का प्रतिनिधित्व करता है।
  • 'OnMove()': एक सार्वजनिक फ़ंक्शन के रूप में परिभाषित, 'OnMove' को सीधे Unity संपादक में एक इनपुट एक्शन से जोड़ा जा सकता है। विधि इनपुट मानों को पढ़ने और उन्हें हमारे 'moveInput' वेरिएबल में निर्दिष्ट करने के लिए 'InputAction.CallbackContext' का उपयोग करती है।
  • 'Update()': 'Update' विधि में, संग्रहीत इनपुट मान गति की दिशा निर्धारित करते हैं। चरित्र की गति के लिए इनपुट को 3डी वेक्टर में अनुवादित किया जाता है, जिसमें परिभाषित गति और फ्रेम-स्वतंत्र गति के लिए Unity 'Time.deltaTime' को ध्यान में रखा जाता है।

इस स्क्रिप्ट को कार्यान्वित करने के लिए, 'OnMove' विधि को Unity संपादक के माध्यम से एक इनपुट एक्शन से लिंक करना महत्वपूर्ण है। यह कनेक्शन सुनिश्चित करता है कि जब कोई खिलाड़ी इनपुट प्रदान करता है (जैसे जॉयस्टिक को हिलाना या तीर कुंजी दबाना), तो संबंधित क्रिया वांछित स्क्रिप्ट फ़ंक्शन को ट्रिगर करती है।

निष्कर्ष

Unity में नया इनपुट सिस्टम एक शक्तिशाली और आवश्यक विकास है, जो आधुनिक गेम विकास की आवश्यकताओं के अनुरूप है। यह बहुमुखी प्रतिभा, सटीकता और उपयोगकर्ता अनुकूलन प्रदान करता है, जिससे गेम इंटरैक्शन अधिक आकर्षक और प्रतिक्रियाशील बन जाता है।

लिंक
Unity 6