Как в изменить width visualElement в процентах?

Есть категория с картами, которую по нажатия на кнопку мы должны либо развернуть, либо, наоборот, уменьшить до начальных размеров. Я нашел способ, как это сделать, но, как я понимаю, это далеко не в процентах.

VisualElement cat1;
Button okButton;
void Start()
{
    var uiDocument = GetComponent<UIDocument>();
    okButton = uiDocument.rootVisualElement.Q<Button>("Up1");
    cat1 = uiDocument.rootVisualElement.Q<VisualElement>("Category1");
    okButton.clicked += ClickMessage;
}

void ClickMessage()
{
    Debug.Log("hello");
    cat1.style.width = 100;
}

Ответы (1 шт):

Автор решения: Yaroslav

В UXML файле пишется просто width = 10%.


visual.style.width можно присвоить цифровое значение, но как и другие размерности стиля, это не float, а StyleLength. Для получения значения прийдется писать так:

float width = visual.style.width.value;

Кроме value, у StyleLength есть keyword(StyleKeyword). Можем увидеть знакомые по интерфейсу билдера Auto и Initial, а так-же None, Null и Undefined.


Если попробывать посмотреть какое значение стоит у элемента, указанного в редакторе с процентами:

Debug.Log(visual.style.width.value + " " + visual.style.width.keyword);

Результат все время будет один и тот-же с вообще всеми размерностями, для всех элементов документа в принцепе: 0 Null.


Проще говоря никак.

UI Toolkit в целом сырая вещь, я попробывал написать горизонтальный список с выбором элемента на подобии ListView и столкнулся с рядом стен делающих это не возможным, как например не возможность установить псевдофазу элемента на checked(как и любую другую), как это сделано у самого ListView или Toggle.

У него классаная концепция, объединяющая UI игры и редактора, дающая новые возможности по псевдостилям, отсутствующие в классической uGUI, но как мина, способная взорваться "ХЕР ТЕБЕ" в любой момент.

→ Ссылка