I want to be able to use a default uxml as inventory for example. I need the structure of the inventory to be the same, but the uss changes per game or even per scene.
I used a game object that I called „Scene Configuration“. (could make it a scriptable object and integrate into game manager, but that is for the future).
The Scene Configuration has an entry
public StyleSheet inventoryUSSFile;
There I drag the custom uss file for the generic inventory uxml.
In the controller for the Inventory UI I read this value from the scene configuraton. This is the uss file asset I want to apply to the inventory on startup.
private void SetSceneDependantInventoryUSS()
{
// get the style sheet list
VisualElementStyleSheetSet styleSheets = m_Root.styleSheets;
if (sceneConfiguration.GetSceneInventoryUSS() != null)
{
m_Root.styleSheets.Clear();
m_Root.styleSheets.Add(sceneConfiguration.GetSceneInventoryUSS());
}
}
I get the list of style sheets attached to the uxml, but rather a VisualElementStyleSheetSet, that has the ability to add uss style sheet assets to the Visual Element. Thus you need to work directly with the styleSheets object from the Visual Element.
Then I clear all active stylesheets and add mine. Done. No refresh needed.




















