यूनिटी में स्क्रिप्टेबलऑब्जेक्ट बनाएं

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

ScriptableObjects का मुख्य लाभ यह है कि वे डेटा कंटेनर बनाने का एक तरीका प्रदान करते हैं जिन्हें स्क्रिप्ट के कई उदाहरणों में आसानी से साझा और पुन: उपयोग किया जा सकता है। किसी विशिष्ट डेटा प्रकार के उदाहरण बनाने के लिए उन्हें "blueprints" के रूप में सोचा जा सकता है। ScriptableObject के कई उदाहरण बनाना और उनके डेटा को स्वतंत्र रूप से संशोधित करना संभव है।

एक स्क्रिप्टेबलऑब्जेक्ट बनाएं

ScriptableObject को Unity संपादक में बनाया जा सकता है और प्रोजेक्ट में संपत्ति के रूप में सहेजा जा सकता है। MonoBehaviour स्क्रिप्ट के विपरीत, ScriptableObject दृश्य में GameObject से जुड़ा नहीं है, लेकिन इसे अन्य स्क्रिप्ट द्वारा संदर्भित और उपयोग किया जा सकता है।

ScriptableObject बनाने के लिए, नीचे दिए गए चरणों का पालन करें:

  • Unity संपादक में, प्रोजेक्ट विंडो में राइट-क्लिक करें और "Create -> C# ScriptableObject" पर नेविगेट करें।
  • इसे एक सार्थक नाम दें और स्क्रिप्ट को पसंदीदा कोड संपादक में खोलें।

ScriptableObject वर्ग को परिभाषित करना:

  • स्क्रिप्ट में, ScriptableObject क्लास से इनहेरिट करें।
  • ScriptableObject में संग्रहित किए जाने वाले डेटा का प्रतिनिधित्व करने के लिए सार्वजनिक फ़ील्ड या गुणों को परिभाषित करें।
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    public string dataName;
    public int dataValue;
}

उपरोक्त उदाहरण में, हम दो सार्वजनिक क्षेत्रों के साथ एक स्क्रिप्टेबलऑब्जेक्ट क्लास को परिभाषित करते हैं: 'dataName (string)' और 'dataValue (int)'

इंस्पेक्टर में ScriptableObject को अनुकूलित करना:

  • संशोधन के लिए विशिष्ट फ़ील्ड्स को Unity इंस्पेक्टर के सामने उजागर करने के लिए '[SerializeField]' जैसी विशेषताओं का उपयोग करें, जबकि उन फ़ील्ड्स को उस स्क्रिप्ट से अप्राप्य रखें जो उस ScriptableObject का उपयोग करेगा।
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    [SerializeField]
    private string dataName;

    [SerializeField]
    private int dataValue;
}

ScriptableObjects के उदाहरण बनाना:

  • Unity संपादक में, प्रोजेक्ट विंडो में राइट-क्लिक करें और ScriptableObject का एक उदाहरण बनाने के लिए "Create" चुनें।
  • इंस्पेक्टर में बनाए गए इंस्टेंस के डेटा को कस्टमाइज़ करें।

अन्य स्क्रिप्ट से ScriptableObject डेटा तक पहुँचना:

  • मोनोबिहेवियर स्क्रिप्ट या किसी अन्य स्क्रिप्ट में, स्क्रिप्टेबलऑब्जेक्ट प्रकार का एक सार्वजनिक या क्रमबद्ध फ़ील्ड बनाएं और इसे इंस्पेक्टर व्यू में असाइन करें।
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;
}
  • ScriptableObject इंस्टेंस के डेटा को निर्दिष्ट फ़ील्ड के माध्यम से एक्सेस किया जा सकता है।
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;

    private void Start()
    {
        Debug.Log("Data Name: " + myData.dataName);
        Debug.Log("Data Value: " + myData.dataValue);
    }
}

निष्कर्ष

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

सुझाए गए लेख
यूनिटी में वीआर हेडसेट नियंत्रण लागू करना
एकता में टाइमर लागू करना
किसी ऑब्जेक्ट को यूनिटी में माउस कर्सर का अनुसरण कैसे करें
पोपी प्लेटाइम से प्रेरित होकर यूनिटी में ग्रैबपैक बनाना
एकता में बुलेट टाइम इफ़ेक्ट बनाना
यूनिटी में कार में प्लेयर एंट्री जोड़ना
यूनिटी में रनटाइम एनिमेटर नियंत्रक का उपयोग करना