UI Core¶
Provides the fundamental classes required for opening and managing UI views in a modular way. This package provides:
- The main service to open a UI Elements (IUiService
)
- The interfaces required by a UI to be handled
- Handlers for disposing of UI (IUiViewReferenceDisposer
) along with two basic disposers (one by destruction and one by pooling)
- The main classes to handle setting up different groups of UIs (IUiGroup
), along with a couple of implementations of these groups.
It's key features are:
- Extensible outside of the module, via UiGroup
s. These simply group functionality about how UI opens and may control the behavior when several are requested to open. On this PR there is only one module included, called ReplaceUiViewGroup
which can only have one UI element open at a time and it forces the previous one to close if a new one is pushed.
- Reactive to ECS components via an UpdateSystem, which calls the open UIs when they implement the relevant interface (IUpdateBySystem
), this can be used to update the UI and even to react to changes like closing.
- Reusable by depending exclusively on GameObjects
to hold and display all the UI. A certain set of interfaces are required for the UI Service to be able to handle it, but they can all be grouped in a component added to the root. This allows designers to work on an entire UI View (dialog/context menu/Hud) without needing a programmer until the very last steps.
More information in the related confluence page.