# Get started with UI Builder

> Understand the workflow to create UI in UI Builder by an example.

Want to learn how to create UI with UI Builder? Use this example to get started.

To create UI in the UI Builder:

1. Create a new UI Document (UXML).
2. Add elements to create your UI hierarchy.
3. Set up attributes and style properties in the Inspector.
4. When more than one element starts to need the same style properties, [create USS style sheets and selectors](#create-a-uss-class-for-the-border-style).
5. Test your UI and if you are satisfied with the results, [extract inline style properties to USS classes](#extract-inline-styles).
6. Save the UI Document (UXML).

## Prerequisites

Before you start, get familiar with the following:

* [Introduction to visual elements and visual tree](/engine/6000.7/manual/uitoolkits/uielements/uie-structure-ui/uie-visual-tree/uie-visual-tree.md)
* [Introduction to UXML](/engine/6000.7/manual/uitoolkits/uielements/uie-structure-ui/uie-uxml/uie-writing-uxmltemplate.md)
* [Introduction to USS](/engine/6000.7/manual/uitoolkits/uielements/uie-uss/uie-about-uss.md)
* [UI Builder interface overview](/engine/6000.7/manual/uitoolkits/uielements/uibuilder/uib-interface-overview.md)

## Example overview

This example creates the main view for the [Create a list view runtime UI](/engine/6000.7/manual/uitoolkits/uielements/uie-structure-ui/uie-uxml-examples/uie-how-to-create-runtime-ui.md) example. It creates a root element as the background, with two containers. One container holds the character name list and another holds the character details. In the character details container, you add background and foreground frames. Finally, you add two labels for the character name. This example won't create the character name list entry UI.


**Final main view layout:**
![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-finalMainView.png)

## Create the root element

Create a new project and then create a root visual element that covers the entire screen. Set your root element to have a background color and center all child elements in the middle of the screen.

1. Create a project in Unity with any template.

2. Select **Window** > **UI Toolkit** > **UI Builder**.

3. In the UI Builder window, at the top left of the Viewport window, select **File** > **New** to create a new UXML document.


   **UI Builder file menu:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-fileMenu.png)

4. Name it as `MainView.uxml` and save.

5. Drag **VisualElement** from **Library** into the **Hierarchy** panel.


   **Create new elements by dragging from the Library:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-newVisualElement.png)

   > **Tip:**
   >
   > You can also double-click a control to add it to the **Hierarchy** panel.

## Create the parent container

Create a new VisualElement underneath the root element. This element becomes the parent container for the left and right sections of the UI.

1. Drag **VisualElement** from **Library** to the root VisualElement in the **Hierarchy** panel.


   **Add a child VisualElement:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-secondaryContainer.png)

## Create the character names list container

Add a ListView as the child element of the container to hold the character names.

1. Drag a **ListView** from the **Library** to the container VisualElement in the **Hierarchy** panel.

2. Select the element from the **Hierarchy** panel.

3. In the Editor panel, set **Name** to `CharacterList`.


   **Background container with the empty element inside:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-setElementName.png)

## Create the character details container

Add a new VisualElement under the same parent as the `#CharacterList` to hold the character details container. The purpose is that when the user selects a character from the list on the left, it displays the character's portrait, name, and class.

1. Drag a **VisualElement** from the **Library** to the container element in the **Hierarchy** panel. This is the container to hold all the elements on the right.

## Create a USS class for the border style

The character details container will use the same border styles as the character names list container. Create a USS class to apply to both containers.

## Create the character portrait background

Add the individual UI controls to the character details container. The first step is to add the character portrait background.

1. Drag **VisualElement** from **Library** to the character details container.

## Create the character portrait foreground

Next in the character details container, add the foreground for an actual image.

1. Drag **VisualElement** from **Library** to the character details container.

2. Select the element from the **Hierarchy** panel.

3. Set **Name** to `CharacterPortrait`.

4. Set **Flex** > **Grow** to `1`, so that the image can use all the available space.

5. Set **Background > Scale Mode** to `scale-to-fit`, so that you can scale the image to match the element size while keeping the correct aspect ratio.


   **VisualElement for the portrait image:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-portraitElement.png)

## Create labels

Add two label controls to the character details container to display the selected character's name and class.

1. Drag **Label** from **Library** to the character details container in the **Hierarchy** panel.

2. Set `Name` to `CharacterName`.

3. Drag **Label** from **Library** to the character details container in the **Hierarchy** panel.

4. Set `Name` to `CharacterClass`.


   **Add labels for name and class:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-characterLabels.png)

5. Select the `#CharacterName` element.

6. Set **Text** > **Font Style** to `B`.

7. Set **Text** > **Size** to `18` pixels.


   **Change font settings:**
   ![](/api/media?file=/engine/6000.7/media/images/uie-howto-runtimeUI-labelSettings.png)

8. In the **Viewport** window, select **File** > **Save** to save the changes to `MainView.uxml`.

## Extract inline styles

In UI Builder, you can create elements and use inline styles only to experiment while the number of elements is still small. As you build a more complex UI, it's easier to manage styles using style sheets. You can extract inline styles to a style sheet in UI Builder.

1. Select the root visual element.

1) In the **Viewport** window, select **File** > **Save**.

If you want to continue to work on the [Create a list view runtime UI](/engine/6000.7/manual/uitoolkits/uielements/uie-structure-ui/uie-uxml-examples/uie-how-to-create-runtime-ui.md) example, you can repeat the steps to extract styles for all the other elements, and follow the instructions to create the example.

## Additional resources

* [Style elements with UI Builder](/engine/6000.7/manual/uitoolkits/uielements/uibuilder/uib-styling-ui-using-uss-selectors.md)
