C# 编辑器脚本在传入滑块的最小/最大值后已断开滑块

C# 编辑器脚本在传入滑块的最小/最大值后已断开滑块,c#,unity3d,C#,Unity3d,在我的游戏中,我在给定范围内随机生成随机对象。我希望开发人员使用范围滑块来防止他犯任何逻辑错误float maxValue的最小值是float minValue,float minValue的最大值是float maxValue,这两个值在原始GameManager脚本中都是公共浮动。问题是这两个值相互依赖,但它们仍然被初始化:minValue=0f;最大值=1f。但这只会破坏滑块,使其卡在其位置 using UnityEditor; using UnityEngine; [CustomEdit

在我的游戏中,我在给定范围内随机生成随机对象。我希望开发人员使用范围滑块来防止他犯任何逻辑错误float maxValue的最小值是float minValue,float minValue的最大值是float maxValue,这两个值在原始GameManager脚本中都是公共浮动。问题是这两个值相互依赖,但它们仍然被初始化:minValue=0f;最大值=1f。但这只会破坏滑块,使其卡在其位置

using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(GameManager))]
public class GameManagerEditor : Editor
{
    SerializedProperty minSpawnRate;
    SerializedProperty maxSpawnRate;
    private void OnEnable()
    {
        minSpawnRate = serializedObject.FindProperty("minSpawnRate");
        maxSpawnRate = serializedObject.FindProperty("maxSpawnRate");
    }
    public override void OnInspectorGUI()
    {
        serializedObject.UpdateIfRequiredOrScript();

        EditorGUILayout.Slider("Min Spawn Rate", minSpawnRate.floatValue, 0f, maxSpawnRate.floatValue);
        EditorGUILayout.Slider("Max Spawn Rate", maxSpawnRate.floatValue, minSpawnRate.floatValue, float.MaxValue);

        serializedObject.ApplyModifiedProperties();
    }
}
但最后我的滑块卡住了,无法移动。如果我试图通过输入一来更改该值,它会立即恢复为旧值,如下图所示: 有没有人能解释一下这个错误的原因,以及我如何修复它?

编辑:重要的是,我为滑块插入了虚拟值,尝试了int滑块和所有东西,但滑块似乎一直处于损坏状态。我按照中的步骤操作,觉得有些东西可能过时了。

试试这个

minSpawnRate.floatValue = EditorGUILayout.Slider(minSpawnRate.floatValue, 0, maxSpawnRate.floatValue);
maxSpawnRate.floatValue = EditorGUILayout.Slider(maxSpawnRate.floatValue, minSpawnRate.floatValue, float.MaxValue);

教程是正确的,只需要设置值。编辑:我忘记了标签,但您可以添加它们。你有没有想过改用一种新的方法?2.float.MaxValue相当大。您应该为设计器提供一个合理的最大值,例如100,因为滑块不能正确显示那么多的步骤,并且您可能不希望生成率太高。@MaxPlay 1。刚试过,滑块还是卡住了。2.在那之前我也尝试过,巧合的是,有着同样的价值,但没有运气