লিপিযোগ্য বিষয়গুলিতে শর্তসাপেক্ষে পরিবর্তনশীল


10

ব্যবহার করার সময় ScriptableObjects, আমি কীভাবে কিছু পরিবর্তনশীল শর্তযুক্ত করতে পারি?

উদাহরণ কোড:

[System.Serializable]
public class Test : ScriptableObject
{
      public bool testbool;
      public string teststring;
      public int testint;
}

লক্ষ্য:testbool == true এরপরে teststringসম্পাদনা করার জন্য কখন উপলব্ধ থাকে, যখন testbool == falseতখন testintসম্পাদনার জন্য যখন অন্যটি " ধুসর " হয়।

উত্তর:


7

সম্পাদক বান্ধব পথটি একটি "কাস্টম ইন্সপেক্টর"। ইউনিটি এপিআই পদগুলিতে, এর অর্থ সম্পাদক শ্রেণি প্রসারিত করা ।

এখানে একটি কার্যকারী উদাহরণ, তবে উপরের ডক লিঙ্কটি আপনাকে বিশদ এবং অতিরিক্ত বিকল্পগুলির মধ্য দিয়ে চলবে:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    private Test targetObject;

    void OnEnable()
    {
        targetObject = (Test) this.target;
    }

    // Implement this function to make a custom inspector.
    public override void OnInspectorGUI()
    {
        // Using Begin/End ChangeCheck is a good practice to avoid changing assets on disk that weren't edited.
        EditorGUI.BeginChangeCheck();

        // Use the editor auto-layout system to make your life easy
        EditorGUILayout.BeginVertical();
        targetObject.testBool = EditorGUILayout.Toggle("Bool", targetObject.testBool);

        // GUI.enabled enables or disables all controls until it is called again
        GUI.enabled = targetObject.testBool;
        targetObject.testString = EditorGUILayout.TextField("String", targetObject.testString);

        // Re-enable further controls
        GUI.enabled = true;

        targetObject.testInt = EditorGUILayout.IntField("Int", targetObject.testInt);

        EditorGUILayout.EndVertical();

        // If anything has changed, mark the object dirty so it's saved to disk
        if(EditorGUI.EndChangeCheck())
            EditorUtility.SetDirty(target);
    }
}

মনে রাখবেন যে এই স্ক্রিপ্টটি কেবল সম্পাদকীয় এপিআইগুলি ব্যবহার করে তাই এটি অবশ্যই সম্পাদক নামে একটি ফোল্ডারে রাখতে হবে। উপরের কোডটি আপনার পরিদর্শককে নিম্নলিখিতগুলিতে পরিণত করবে:

এখানে চিত্র বর্ণনা লিখুন

আপনি সম্পাদক স্ক্রিপ্টিং সম্পর্কে আরও স্বাচ্ছন্দ্য না হওয়া পর্যন্ত এটি আপনাকে ঘূর্ণায়মান হওয়া উচিত।


4
[System.Serializable]
public class Test : ScriptableObject
{
    private bool testbool;
    public string teststring;
    public int testint;

    public string TestString 
    {
        get 
        {    
            return teststring; 
        }
        set 
        {
            if (testbool)
                teststring = value; 
        }
    }
}

সুনির্দিষ্ট লাগছে! আমি পরীক্ষা করে রিপোর্ট করব!
— ভ্যালামর্ডে

এটি কেবলমাত্র একটি ভুল মান প্রতিরোধ করবে এবং শর্ত থাকাকালীন সম্পাদনা করার জন্য এটি অনুপলব্ধ করবে না বলে মনে হয় true।
— ভালামর্ডে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.