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

Рейтинг: 0Ответов: 1Опубликовано: 06.05.2023

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

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;
}

Ответы

▲ 0Принят

В 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 в целом сырая вещь. Ситуаций: "можно в редакторе но не возможно через код", довольно много. Что бы реализовать некоторые вещи, нужно написать в десять раз больше кода, чем в классическом uGUI. Зачем этим пользоваться? Не знаю!