To render UI(User Interface) Allows a user to interact with your application. Unity currently supports three UI systems. More info
See in Glossary and react to input from the users in the Game view, connect the UXML Documents to a Panel Settings asset by a UI Document component.
Every UI Document component references a UXML Document that defines the UI and a Panel Settings that renders it. You can connect more than one UXML Document to a single Panel Settings asset.
A Panel Settings asset defines a panel in the SceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary. The panel provides the root visual elementA node of a visual tree that instantiates or derives from the C# VisualElement
class. You can style the look, define the behaviour, and display it on screen as part of the UI. More info
See in Glossary that UI hierarchies are attached to, and draws the UI in the Scene at runtime. How you configure the Panel Settings asset determines how the UI is rendered. It also determines how the UI reacts to input. For example, the panel that’s visually in the front intercepts clicks from the user before the panels that are visually in the back.
You can configure the Panel Settings asset to do the following:
To configure a panel:
A panel can display UI from more than one UXML Document component. Each UI Document has a Sort Order property that sets the UXML Document rendering order:
To connect more than one UXML Document to a panel:
Select or create a GameObjectThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary to host the UI.
Select Component > UI Toolkit > UI Document to add a UI Document component.
In the Inspector window of the UI Document, do the following:
Repeat the process for each UXML Document.
Note: If there are multiple UI document components attached to the same Panel Settings, all these documents have a common focus navigation context. If they have distinct Panel Settings, navigation won’t jump automatically from one to the other even if you arrange them side by side. To make navigation jump from one to the other, you must set the focusController
of the Panel Settings to the FocusController
of the UI Document component you want to jump to.
Unity loads a UI Document component’s source UXML documents when it calls the OnEnable()
method on the component. To ensure the visual treeAn object graph, made of lightweight nodes, that holds all the elements in a window or panel. It defines every UI you build with the UI Toolkit.
See in Glossary loads correctly, add logic to interact with the controls inside the OnEnable()
method. This means your script must respond to OnEnable()
and OnDisable()
to safely reference visual elements from your UXML documents.
A UI Document component clears its contents when it responds to the OnEnable()
and OnDisable()
methods. This approach removes UI elements that the UI Document won’t reuse soon and effectively clears the associated resources. Additionally, if a UI Document component isn’t assigned with a Panel Settings asset, it automatically clears its contents.
To hide a UI element that’s likely to be reused soon or needs to appear quickly to avoid an initialization penalty, set the display
of the UIDocument.rootVisualElement
to none
. You can also use this to hide a UI element component that’s part of a larger UI hierarchy.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.