Страница 1 из 1

Самый упоротый баг со сбросом значений

СообщениеДобавлено: 01 ноя 2020, 23:23
1max1
Даже не знаю как назвать тему, настолько все странно. На видео видно что значения дублируются как только идет выделение нескольких объектов, причем если делать через EditorGUILayout.PropertyField то все ок. С одним объектом работает нормально, но стоит только выделить несколько, как тут же одна переменная дублируется в остальные компоненты.



this.Initialize(); это расширение для удобства инициализации по имени, оно тут не причем, если что)

Синтаксис:
Используется csharp
        public static void Initialize(this Editor editor)
        {
            foreach (var field in editor.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
            {
                if (field.FieldType == typeof(SerializedProperty))
                {
                    var property = editor.serializedObject.FindProperty(field.Name);

                    if (property != null)
                    {
                        field.SetValue(editor, property);
                    }
                }
            }
        }

Re: Самый упоротый баг со сбросом значений

СообщениеДобавлено: 02 ноя 2020, 03:15
1max1
В общем, с мульти объектами и прямым присвоением не так просто, нужно еще костыль сверху накидывать в виде EditorGUI.BeginChangeCheck, чтобы не трогало ничего без изменения. Мда... пожалуй самое странное что есть в юнити это скрипты для редактора, уж больно сырая штука я думаю. Может кто еще подскажет как в int поле нарисовать символ тире, чтобы отображать его когда у скриптов значения разные?

Re: Самый упоротый баг со сбросом значений

СообщениеДобавлено: 02 ноя 2020, 08:00
samana
1max1 писал(а):Мда... пожалуй самое странное что есть в юнити это скрипты для редактора, уж больно сырая штука я думаю.

Насколько я помню, то весь интерфейс программы написан как раз именно этими же скриптами редактора. То-есть скрипты редактора это не отдельная фишка от разработчиков Unity для пользователя, а сами разработчики используют эти же самые скрипты для всего, что касается интерфейса и интерактива в редакторе.
Просто там видимо много нюансов, которые мало кому известны, вот и причина "сырости" для обычного пользователя.

Re: Самый упоротый баг со сбросом значений

СообщениеДобавлено: 04 ноя 2020, 12:55
1max1
Просто там видимо много нюансов, которые мало кому известны, вот и причина "сырости" для обычного пользователя.

Да-да, именно поэтому свойство https://docs.unity3d.com/ScriptReferenc ... -type.html хранит в себе не сам тип, а имя типа, без имени сборки, без вложенности классов, тупо имя и все. И не дай бог имена каких-то классов совпадут в разных неймспейсах, ошибки не избежать. Благо в 2020 это фиксанули (и то, кое-как), но всякие тлс до сих пор в пролете. Я уже молчу про логику отрисовки элементов с убогим обращение к их позиционированию. Ты просто еще не делал ничего сложного по этой теме, особенно с рефлексией, там лес дремучей некуда + скуднейшая документация, ну короче... :-B