簡體   English   中英

我無法在 Unity 的自定義檢查器中更改序列化變量的值

[英]I can't change the value of a serialized variable in Unity's custom inspector

我剛剛學會了如何(部分)使用 Unity 的自定義檢查器。 如果 bool 或 enum 或任何為真,我主要想用它來序列化特定變量。 無論如何,在一個測試項目中,我制作了一個名為 usesSpeed 的布爾值。 然后我做了一個叫做速度的浮點數。 但我只想在 usesSpeed 為真時序列化速度。 這很有效,但問題是我根本無法通過檢查器更改速度值。 我無法“拖動”該值或輸入任何內容。 它始終只是 0。這是我的代碼。

public class script : MonoBehaviour
{
    [HideInInspector] public float speed;
    public bool usesSpeed;
    
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        Debug.Log(speed);
    }
    [CustomEditor(typeof(script))]
    public class edtr : Editor
    {
        public override void OnInspectorGUI()
        {
            script scrpt = (script)target;
            base.OnInspectorGUI();
        if (scrpt.usesSpeed)
        {
              
                EditorGUILayout.LabelField("Speed stuff");
                EditorGUILayout.PropertyField(serializedObject.FindProperty("speed"));
                
        }
            
            
        }
    }
}

編輯:沒關系我發現了如何解決它我只需要添加

serializedObject.ApplyModifiedProperties();

在 OnInspectorGUI() 結束時

抱歉我解決了。 我所要做的就是在最后添加這個,一切都很好。

serializedObject.ApplyModifiedProperties();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM