Активация доп. полей после выполнения условия в Unity

Подскажите, как в Unity сделать активными дополнительные поля для ввода после выполнения условия(установки галочки). Заранее спасибо!

Вот пример

1

2


Ответы (1 шт):

Автор решения: M. Green

Для этого вам потребуется написать свой собственный редактор для компонента. Выглядеть он будет примерно вот так (это пример с заменой рисуемых полей):

public class MyClass : MonoBehaviour //ScriptableObject
{
    public bool IsImportantToggle;
    public string FirstField;
    public string SecondString;
}

[CustomEditor(typeof(MyClass))]
public class MyCustomEditor : Editor
{
    MyClass _target;

    private void OnEnable()
    {
        _target = target as MyClass;
    }

    public override void OnInspectorGUI()
    {
        _target.IsImportantToggle = EditorGUILayout.Toggle("Показать первый?", _target.IsImportantToggle);
        if (_target.IsImportantToggle)
        {
            _target.FirstField = EditorGUILayout.TextField("Первое поле: ", _target.FirstField);
        }
        else
        {
            _target.SecondString = EditorGUILayout.TextField("Второе поле: ", _target.SecondString);
        }
    }
}

Все классы, которые наследуются от Editor или используют что-то из namespace UnityEditor должны находиться в файлах внутри папки Editor (не обязательно прямо в ней, можно и внутри ещё каких-то папок, главное, чтобы хотя бы одна папка по всему пути до файла называлась Editor - тогда этот скрипт не будет компилироваться в билд). либо, вы можете вписать их код внутрь дефайнов и тогда они тоже нормально скомпилируются:

#if UNITY_EDITOR

///код использующий редактор

#endif
→ Ссылка