खोज…


वाक्य - विन्यास

  • [AddComponentMenu (स्ट्रिंग मेनूनाम)]
  • [AddComponentMenu (स्ट्रिंग मेनूनाम, इंट ऑर्डर)]
  • [CanEditMultipleObjects]
  • [प्रसंगमेनुइतेम (स्ट्रिंग नाम, स्ट्रिंग फ़ंक्शन)]
  • [प्रसंगनामु (स्ट्रिंग नाम)]
  • [CustomEditor (निरीक्षण प्रकार टाइप)]
  • [CustomEditor (प्रकार का निरीक्षण किया गया है, बूल संपादक
  • [CustomPropertyDrawer (प्रकार प्रकार)]
  • [CustomPropertyDrawer (प्रकार प्रकार, बूल उपयोगफोरसिलीन)]
  • [DisallowMultipleComponent]
  • [DrawGizmo (GizmoType gizmo)]
  • [DrawGizmo (GizmoType परिकल्पित, प्रकार खींचा गया GizmoType)]
  • [ExecuteInEditMode]
  • [हैडर (स्ट्रिंग हेडर)]
  • [HideInInspector]
  • [InitializeOnLoad]
  • [InitializeOnLoadMethod]
  • [MenuItem (स्ट्रिंग आइटम नाम)]
  • [MenuItem (स्ट्रिंग आइटमनाम, बूल isValidateFunction)]
  • [MenuItem (स्ट्रिंग आइटम नाम, बूल isValidateFunction, int प्राथमिकता)]
  • [बहुस्तरीय (इंट लाइन)]
  • [वरीयता) (स्ट्रिंग नाम)]
  • [रेंज (फ्लोट मिन, फ्लोट अधिकतम)]
  • [अपेक्षित] प्रकार (प्रकार)
  • [RuntimeInitializeOnLoadMethod]
  • [
  • [SerializeField]
  • [अंतरिक्ष (फ्लोट ऊंचाई)]
  • [TextArea (int minLines, int maxLines)]
  • [टूलटिप (स्ट्रिंग टूलटिप)]

टिप्पणियों

SerializeField

एकता की क्रमबद्धता प्रणाली का उपयोग निम्नलिखित करने के लिए किया जा सकता है:

  • सार्वजनिक गैरमानक क्षेत्रों को क्रमबद्ध कर सकते हैं (क्रमबद्ध प्रकार के)
  • [SerializeField] विशेषता के साथ चिह्नित nonpublic nonstatic क्षेत्रों को क्रमबद्ध कर सकते हैं
  • स्थिर क्षेत्रों को क्रमबद्ध नहीं किया जा सकता
  • स्थैतिक गुणों को क्रमबद्ध नहीं कर सकते

आपका क्षेत्र, भले ही SerializeField विशेषता के साथ चिह्नित हो, केवल तभी जिम्मेदार होगा यदि यह एक प्रकार का है, जो एकता को अनुक्रमित कर सकता है, जो हैं:

  • UnityEngine.Object (जैसे GameObject, Component, MonoBeviour, Texture2D) से विरासत में मिली सभी कक्षाएं
  • सभी बुनियादी डेटा प्रकार जैसे इंट, स्ट्रिंग, फ्लोट, बूल
  • कुछ बिल्ट-इन प्रकार जैसे वेक्टर 2/3/4, क्वाटर्नियन, मैट्रिक्स 4x4, कलर, रेक्ट, लेयरमास्क
  • एक क्रमबद्ध प्रकार की सरणियाँ
  • क्रमबद्ध प्रकार की सूची
  • enums
  • structs

सामान्य निरीक्षक गुण

[Header( "My variables" )]
public string MyString;

[HideInInspector]
public string MyHiddenString;

[Multiline( 5 )]
public string MyMultilineString;

[TextArea( 2, 8 )]
public string MyTextArea;

[Space( 15 )]
public int MyInt;

[Range( 2.5f, 12.5f )]
public float MyFloat;

[Tooltip( "This is a tip for MyDouble" )]
public double MyDouble;

[SerializeField]
private double myHiddenDouble;

परिणाम

जब एक क्षेत्र के लेबल पर मँडरा:

Result2


[Header( "My variables" )]
public string MyString;

हेडर एक बोल्ड लेबल को जिम्मेदार क्षेत्र के ऊपर पाठ से युक्त करता है। यह अक्सर लेबलिंग समूहों के लिए उपयोग किया जाता है ताकि वे अन्य लेबल के खिलाफ खड़े हो सकें।

[HideInInspector]
public string MyHiddenString;

HideInInspector सार्वजनिक फ़ील्डफ़ॉर्म को निरीक्षक में दिखाया जाने से रोकता है। यह कोड के अन्य भागों से उन क्षेत्रों तक पहुँचने के लिए उपयोगी है जहाँ वे अन्यथा दृश्यमान या परिवर्तनशील नहीं हैं।

[Multiline( 5 )]
public string MyMultilineString;

मल्टीलाइन एक निर्दिष्ट संख्या में लाइनों के साथ एक टेक्स्टबॉक्स बनाता है। इस राशि से अधिक न तो बॉक्स का विस्तार करेगा और न ही टेक्स्ट को लपेटेगा।

[TextArea( 2, 8 )]
public string MyTextArea;

यदि पाठ आवंटित क्षेत्र से अधिक है, तो TextArea स्वचालित शब्द-रैपिंग और स्क्रॉल बार के साथ बहु-शैली पाठ की अनुमति देता है।

[Space( 15 )]
public int MyInt;

अंतरिक्ष निरीक्षक को समूहों को अलग करने और अलग करने में पूर्व और वर्तमान वस्तुओं के बीच अतिरिक्त स्थान जोड़ने के लिए मजबूर करता है।

[Range( 2.5f, 12.5f )]
public float MyFloat;

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

[Tooltip( "This is a tip for MyDouble" )]
public double MyDouble;

जब भी क्षेत्र का लेबल ओवर होवर हो, टूलटिप एक अतिरिक्त विवरण दिखाता है।

[SerializeField]
private double myHiddenDouble;

SerializeField निजी क्षेत्रों के लिए उपयोगी - क्षेत्र को क्रमबद्ध करने के लिए एकता को मजबूर करता है।

घटक गुण

[DisallowMultipleComponent]
[RequireComponent( typeof( Rigidbody ) )]
public class AttributesExample : MonoBehaviour 
{
    [...]
}

[DisallowMultipleComponent]

DisallowMultipleComponent विशेषता उपयोगकर्ताओं को एक GameObject में इस घटक के कई उदाहरण जोड़ने से रोकती है।

[RequireComponent( typeof( Rigidbody ) )]

जब यह घटक एक GameObject में जोड़ा जाता है, तो आवश्यकताएँ के लिए आवश्यकताएँ अन्य घटक (या अधिक) को निर्दिष्ट करने की अनुमति देता है। जब आप इस घटक को एक GameObject में जोड़ते हैं, तो आवश्यक घटक स्वचालित रूप से जोड़ दिए जाएंगे (यदि पहले से मौजूद नहीं है) और उन घटकों को हटाया नहीं जा सकता है जब तक कि उन्हें हटाने की आवश्यकता न हो।

रनटाइम विशेषताएँ

[ExecuteInEditMode]
public class AttributesExample : MonoBehaviour 
{

    [RuntimeInitializeOnLoadMethod]
    private static void FooBar() 
    {
        [...]
    }

    [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )]
    private static void Foo() 
    {
        [...]
    }

    [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.AfterSceneLoad )]
    private static void Bar() 
    {
        [...]
    }

    void Update() 
    {
        if ( Application.isEditor )
        {
            [...]
        } 
        else
        {
            [...]
        }
    }
}

[ExecuteInEditMode]
public class AttributesExample : MonoBehaviour 

ExecuteInEditMode विशेषता एकता को इस स्क्रिप्ट के जादू के तरीकों को निष्पादित करने के लिए मजबूर करती है, जबकि खेल नहीं खेल रहा है।

कार्यों को लगातार प्ले मोड की तरह नहीं कहा जाता है

  • अद्यतन केवल तब कहा जाता है जब दृश्य में कुछ बदल जाता है।
  • जब गेम व्यू ईवेंट प्राप्त करता है, तो OnGUI को कहा जाता है।
  • OnRenderObject और अन्य रेंडरिंग कॉलबैक फ़ंक्शंस दृश्य दृश्य या गेम व्यू के प्रत्येक प्रतिनिधि को कहते हैं।
[RuntimeInitializeOnLoadMethod]
private static void FooBar()

[RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )]
private static void Foo() 

[RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.AfterSceneLoad )]
private static void Bar() 

RuntimeInitializeOnLoadMethod विशेषता रनटाइम क्लास विधि को तब बुलाया जा सकता है जब गेम रनटाइम लोड करता है, उपयोगकर्ता से किसी भी बातचीत के बिना।

आप निर्दिष्ट कर सकते हैं कि क्या आप दृश्य लोड (डिफ़ॉल्ट होने के बाद) से पहले या बाद में मंगवाई गई विधि चाहते हैं। इस विशेषता का उपयोग करने वाले तरीकों के लिए निष्पादन के आदेश की गारंटी नहीं है।

मेनू विशेषताएँ

[AddComponentMenu( "Examples/Attribute Example" )]
public class AttributesExample : MonoBehaviour 
{
    [ContextMenuItem( "My Field Action", "MyFieldContextAction" )]
    public string MyString;

    private void MyFieldContextAction() 
    {
        [...]
    }

    [ContextMenu( "My Action" )]
    private void MyContextMenuAction() 
    {
        [...]
    }
}

[AddComponentMenu] विशेषता का परिणाम है

परिणाम 1

[ContextMenuItem] विशेषता का परिणाम है

परिणाम २

[ContextMenu] विशेषता का परिणाम है

परिणाम 3


[AddComponentMenu( "Examples/Attribute Example" )]
public class AttributesExample : MonoBehaviour 

AddComponentMenu विशेषता आपको घटक-> स्क्रिप्ट मेनू के बजाय अपने घटक को घटक मेनू में कहीं भी रखने की अनुमति देती है।

[ContextMenuItem( "My Field Action", "MyFieldContextAction" )]
public string MyString;

private void MyFieldContextAction() 
{
    [...]
}

ContextMenuItem विशेषता आपको उन फ़ंक्शन को परिभाषित करने की अनुमति देती है जिन्हें किसी फ़ील्ड के संदर्भ मेनू में जोड़ा जा सकता है। चयन होने पर इन कार्यों को अंजाम दिया जाएगा।

[ContextMenu( "My Action" )]
private void MyContextMenuAction() 
{
    [...]
}

ContextMenu विशेषता आपको उन फ़ंक्शन को परिभाषित करने की अनुमति देती है जिन्हें घटक के संदर्भ मेनू में जोड़ा जा सकता है।

संपादक गुण

[InitializeOnLoad]
public class AttributesExample : MonoBehaviour
{
    
    static AttributesExample() 
    {
        [...]
    }

    [InitializeOnLoadMethod]
    private static void Foo()
    {
        [...]
    }
}

[InitializeOnLoad]
public class AttributesExample : MonoBehaviour
{
    
    static AttributesExample() 
    {
        [...]
    }

InitializeOnLoad विशेषता उपयोगकर्ता को उपयोगकर्ता से किसी भी बातचीत के बिना एक वर्ग को आरंभ करने की अनुमति देती है। यह तब होता है जब भी संपादक लॉन्च करता है या एक recompile पर। स्टैटिक कंस्ट्रक्टर गारंटी देता है कि यह किसी भी अन्य स्टैटिक फंक्शंस से पहले कहा जाएगा।

[InitializeOnLoadMethod]
private static void Foo()
{
    [...]
}

InitializeOnLoad विशेषता उपयोगकर्ता को उपयोगकर्ता से किसी भी बातचीत के बिना एक वर्ग को आरंभ करने की अनुमति देती है। यह तब होता है जब भी संपादक लॉन्च करता है या एक recompile पर। इस विशेषता का उपयोग करने वाले तरीकों के लिए निष्पादन के आदेश की गारंटी नहीं है।


[CanEditMultipleObjects]
public class AttributesExample : MonoBehaviour 
{

    public int MyInt;

    private static string prefsText = "";

    [PreferenceItem( "My Prefs" )]
    public static void PreferencesGUI()
    {
        prefsText = EditorGUILayout.TextField( "Prefs Text", prefsText );
    }

    [MenuItem( "Attributes/Foo" )]
    private static void Foo()
    {
        [...]
    }

    [MenuItem( "Attributes/Foo", true )]
    private static bool FooValidate() 
    {
        return false;
    }
}

[वरीयताएँ] विशेषता का परिणाम है

परिणाम २

[MenuItem] विशेषता का परिणाम है

परिणाम 3


[CanEditMultipleObjects]
public class AttributesExample : MonoBehaviour 

CanEditMultipleObjects विशेषता आपको कई GameObjects पर अपने घटक से मान संपादित करने की अनुमति देती है। इस घटक के बिना आप कई GameObjects का चयन करते समय अपने घटक को सामान्य की तरह दिखाई नहीं देंगे, लेकिन इसके बजाय आप संदेश "मल्टी-ऑब्जेक्ट एडिटिंग समर्थित" देखेंगे:

यह विशेषता कस्टम संपादकों के लिए बहु संपादन का समर्थन करने के लिए है। गैर-कस्टम संपादक स्वचालित रूप से बहु संपादन का समर्थन करते हैं।

[PreferenceItem( "My Prefs" )]
public static void PreferencesGUI()

प्राथमिकता सुविधा आपको एकता की वरीयताओं के मेनू में एक अतिरिक्त आइटम बनाने की अनुमति देती है। उपयोग करने के लिए प्राप्त करने की विधि को स्थिर होना चाहिए।

[MenuItem( "Attributes/Foo" )]
private static void Foo()
{
    [...]
}

[MenuItem( "Attributes/Foo", true )]
private static bool FooValidate() 
{
    return false;
}

MenuItem विशेषता आपको फ़ंक्शन को निष्पादित करने के लिए कस्टम मेनू आइटम बनाने की अनुमति देती है। यह उदाहरण फ़ंक्शन के निष्पादन को रोकने के लिए एक सत्यापनकर्ता फ़ंक्शन (जो हमेशा गलत रिटर्न देता है) का उपयोग करता है।


[CustomEditor( typeof( MyComponent ) )]
public class AttributesExample : Editor
{
    [...]
}

CustomEditor विशेषता आपको अपने घटकों के लिए कस्टम संपादक बनाने की अनुमति देती है। इन संपादकों का उपयोग निरीक्षक में आपके घटक को खींचने के लिए किया जाएगा और संपादक वर्ग से प्राप्त करने की आवश्यकता होगी।

[CustomPropertyDrawer( typeof( MyClass ) )]
public class AttributesExample : PropertyDrawer 
{
    [...]
}

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

[DrawGizmo( GizmoType.Selected )]
private static void DoGizmo( AttributesExample obj, GizmoType type )
{
    [...]
}

DrawGizmo विशेषता आपको अपने घटकों के लिए कस्टम gizmos आकर्षित करने की अनुमति देती है। इन गिज़्मो को सीन व्यू में तैयार किया जाएगा। आप तय कर सकते हैं कि ड्रॉगैमिक्स विशेषता में GizmoType पैरामीटर का उपयोग करके कब को आकर्षित किया जाए।

प्राप्त करने की विधि के लिए दो मापदंडों की आवश्यकता होती है, पहला घटक है जिसके लिए काम को आकर्षित करने के लिए और दूसरा वह स्थिति है कि जिस वस्तु को आवश्यकता होती है, उसके लिए तैयार किया जाता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow