Активация доп. полей после выполнения условия в Unity
Подскажите, как в Unity сделать активными дополнительные поля для ввода после выполнения условия(установки галочки). Заранее спасибо!
Вот пример
Ответы (1 шт):
Для этого вам потребуется написать свой собственный редактор для компонента. Выглядеть он будет примерно вот так (это пример с заменой рисуемых полей):
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

