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


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.