Version: 2022.1
Bind a custom control to custom data type
Support for runtime UI

ViewData persistence

The ViewData API solves the problem of having a UI-specific state, not part of the data, survive domain reload and Editor restarts. The idea is to have a persistent data store on each EditorWindow. Each VisualElement has a viewDataKey that must be set to enable ViewData persistence.

Usage

To enable view data persistence for an element that supports it, set the viewDataKey to a unique key within your EditorWindow.

Persistence of view data is enabled as long as an element has a valid viewDataKey. The only exception is when an element is in the shadow tree of its parent and not a physical child of its logical parent’s contentContainer. In this case, the parent must have its own viewDataKey set for the children in its shadow tree to be persisted.

For example, in ScrollView, each scroll bar has its own viewDataKey that is unique within the ScrollView element. When the ScrollView has no key set, the scroll bars aren’t persistent. Otherwise, the scroll bars will combine their viewDataKey with the parent viewDataKey to create a unique global key.

Bind a custom control to custom data type
Support for runtime UI