Скрипт редактора сломал слайдеры после передачи значений min / max для слайдеров - PullRequest
0 голосов
/ 29 апреля 2020

В моей игре я порождаю случайные объекты в случайное время из заданного диапазона. Я хотел, чтобы у разработчика были ползунки, использующие диапазоны, чтобы он не допустил логических ошибок (минимальное значение для числа с плавающей запятой maxValue - это число с плавающей запятой minValue, а максимальное значение для числа с плавающей запятой minValue - это число с плавающей запятой maxValue (оба из которых публикуются c в исходных скриптах GameManager). Подвох в том, что оба значения зависят друг от друга (но они все еще инициализируются: 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 и все но кажется, что ползунки остаются сломанными. Я следовал инструкциям здесь и чувствую, что что-то может устареть.

1 Ответ

1 голос
/ 30 апреля 2020

Попробуйте это ...

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

Учебное пособие было правильным, просто нужно было установить значения. Изменить: я забыл ярлыки, но вы можете добавить их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...