编辑器脚本在传递滑块的最小值和最大值后,滑块被破坏了。

问题描述 投票:0回答:1

在我的游戏中,我在随机时间从给定的范围内产生随机的对象,我希望开发者有一个使用范围的滑块,以防止他犯任何逻辑错误(浮点数的最小值)。我想让开发者有一个使用范围的滑块,以防止他犯任何逻辑错误(float maxValue 是浮子 minValue 和浮点数的最大值 minValue 是浮子 maxValue,这两个值在原来的GameManager脚本中都是公共的floats)。) 问题是这两个值都是相互依赖的(但它们仍然是初始化的。minValue = 0f; maxValue = 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();
    }
}

但我最终得到的是被卡住不能移动的滑块。如果我试图通过输入一个值来改变它,它就会立即恢复到旧的值(如下图所示)。Sliders 谁能解释一下这个错误的原因,以及我如何解决它?

编辑:(重要的我为滑块插入了虚拟值,尝试了int滑块和其他一切功能,但似乎滑块一直是坏的。我按照下面的步骤进行操作 此处 我觉得有些东西可能已经过时了。

c# unity3d
1个回答
1
投票

试试这个...

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

教程是对的,只是需要设置值。编辑:我忘了标签,但你可以添加它们。

© www.soinside.com 2019 - 2024. All rights reserved.