I tried to use bindingPath to bind this to a variable. However, I found that binding is always associated with SerializedObjects. Does this really pay off? I could not even bind to EditorWindow after element.Bind (new SerializedObject (window)) As a whole, I am very confused that we are attached to Unity objects. In fact, this means that I cannot change an object variable without first creating a personal UnityEngine.Object for it. Horror! his actually completely negates the creation of a normal architecture in the editor. Maybe someone has already come up with a good practice how to work with it? I thought about container objects but ScriptableObject does not support Generic types. Moreover, it will not allow drawing something non-serializable since the object simply will not have a unityPath. Perhaps there is any other approach to binding? Initially, I remember ChangeEvent <float> but it confuses me a bit. I would like to notify elements about field changes without a specific update call for each element. So for example, if I use Slider and FloatField in a pair, I want to see them synchronized. I could call some UI.UpdateValue (id) on the property being changed, but I wouldn’t want to do anything more than this, without specific calls slider.value = value + floatfield.value = value. Such a solution, I think, can be done manually, but is there something similar in UIElements?