Перевод PropertyDrawer на UI Toolkit? Как отслеживать изменения в связанном объекте?
Вопросик: как в редакторе непрерывно отслеживать изменение объекта в сцене или проекте(например AssetBundle)?
Существует у меня любимая коллекция PropertyDrawer, написанная еще лет 5-10 назад. Активно ее использовал во всех проектах, и после перехода Unity Editor на отрисовку большинства контролов через UI Toolkit начались всякие неприятные последствия, в виде не работающих фич. Из за чего взялся переписывать все на новый лад, но столкнулся с рядом загвоздок.
Предусмотрено у меня в базовом классе для PropertyDrawer возможность запускать Action если хранимое в поле значение изменилось. Разобрался сделал через трек за свойством в VisualElement, вроде обновляется, но работать мне кажется это будет гарантированно только если пользователь внес изменения, а вот насчет изменений например из кода такой уверенности нет, потому что при генерации VisualElement не всегда есть Binding к свойству.
Еще есть у меня такое понятие как источник данных. Например для генерации выпадающего списка полей класса или для выбора одного из элементов коллекции. И как правило в качестве источника можно указать в атрибуте другое свойства в этом же объекте или например ссылку на другой объект и получение свойства уже у него. Раньше UI постоянно обновлялся и можно было при обновлении проверять что содержимое поля коррелирует со значениями получаемыми от источника. Сейчас я только когда пользователь явно что-то сделал могу обновить интерфейс.
Или вот еще управление видимостью. Можно было задать в атрибуте указание что поле должно отображаться/скрываться только если значение в источнике отстутствует или равно определенному значению. Так можно было часть логики изменений интерфейса перенести в атрибут. То бишь есть поле тип персонажа. Здоровье, урон показываем всем, а вот ярость для орков, стойкость для людей, а ловкость для эльфов. Фактически получение данных из источника и манипулирование UI.
Вот и выходит что надо при формировании UI иногда надо привязаться к другому объекту и отлавливать момент когда оно меняется. Как это сделать в редакторе пока не знаю и надеюсь кто-то подскажет варианты осуществимо ли это и возможные пути реализаци? Если способ привязаться есть, то на что надо обратить внимание... Например подписаться/отписаться при уничтожении окна редактора (PropertyDrawer использую не только для редактора, но и диалоговые окна EditorWindow с ними удобно формировать)
P.S.: Мне бы направление, а дальше я сам... Unity сейчас больше как хобби, поэтому времени долго копаться в документации нет, а у ИИ даже спросить то как не знаю