在我的游戏中,我在随机时间从给定的范围内产生随机的对象,我希望开发者有一个使用范围的滑块,以防止他犯任何逻辑错误(浮点数的最小值)。我想让开发者有一个使用范围的滑块,以防止他犯任何逻辑错误(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();
}
}
但我最终得到的是被卡住不能移动的滑块。如果我试图通过输入一个值来改变它,它就会立即恢复到旧的值(如下图所示)。 谁能解释一下这个错误的原因,以及我如何解决它?
编辑:(重要的我为滑块插入了虚拟值,尝试了int滑块和其他一切功能,但似乎滑块一直是坏的。我按照下面的步骤进行操作 此处 我觉得有些东西可能已经过时了。
试试这个...
minSpawnRate.floatValue = EditorGUILayout.Slider(minSpawnRate.floatValue, 0, maxSpawnRate.floatValue);
maxSpawnRate.floatValue = EditorGUILayout.Slider(maxSpawnRate.floatValue, minSpawnRate.floatValue, float.MaxValue);
教程是对的,只是需要设置值。编辑:我忘了标签,但你可以添加它们。