Supporting IMGUI
Unity UI: Unity User Interface

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 in order to enable ViewData persistence.


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 are not persisted. Otherwise, the scroll bars will combine their viewDataKey with the parent viewDataKey to create a globally unique key.