Version: 2022.3
Language : English
Customize UXML tag names and attributes
Encapsulate UXML documents with logic

Best practices for managing elements

This page describes the best practices for managing elements in 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
.

Pre-create hierarchies

It’s a slow operation to create elements and load them in a hierarchy. To avoid this you can pre-create the elements in a hierarchy, and use display:none to hide them and only display them when needed. However, it might consume more memory to create many elements at the same time.

Pool recurring elements

Elements pooling is to keep hold of elements that you might recreate them later on, rather than creating elements with new() every time and letting go of them.

It’s important to be fully in control of all elements that you pool and make sure you reset them properly before you return them to the pool. Otherwise, the pooling system can become unstable and troublesome. For example, it’s impossible to clean up an element if you pool elements while registering event callbacks or setting internal non-serialized state at the same time.

Keep the number of visible elements low

To keep the number of visual elementsA 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
low, use ListView when possible. ListView pools elements and recycles elements as the user scrolls.

Alternatively, you can implement your own pool and recycle mechanism similar to the ListView, and use the following to manage the visible area:

Additional resources

Customize UXML tag names and attributes
Encapsulate UXML documents with logic
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961