[英]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.