Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Вариации типа темы

При проектировании пользовательского интерфейса могут возникнуть ситуации, когда узлу Control требуется придать внешний вид, отличный от того, что обычно определяется Theme. Каждый узел управления имеет переопределенные свойства темы, которые позволяют переопределить стиль для каждого отдельного элемента пользовательского интерфейса.

../../_images/themecheck.webp

Такой подход быстро становится сложным, если вам нужно использовать одинаковый внешний вид для нескольких элементов управления. Представьте, что вы используете серый, синий и красный варианты Button во всём проекте. Настраивать его каждый раз при добавлении нового элемента кнопки в интерфейс — утомительная задача.

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

Следуя предыдущему примеру, ваша тема может иметь стили, цвета и шрифты, определённые для типа Button, что позволяет настроить внешний вид каждой кнопки в вашем пользовательском интерфейсе. Чтобы получить серую, красную или синюю кнопку, необходимо создать новый тип, например GrayButton, и отметить его как вариант базового типа Button.

Вариации типов могут заменить некоторые аспекты базового типа, сохранив другие. Они также могут определять свойства, которые не определены в базовом стиле. Например, ваш GrayButton может переопределить стиль normal базового Button и добавить font_color, который Button никогда не определял. Элемент управления будет использовать комбинацию обоих типов, отдавая приоритет вариации типа.

Примечание

То, как элементы управления определяют, какие элементы темы они используют из каждого типа и каждой темы, лучше описано в разделе Настройка проекта статьи "Введение в скины графического интерфейса".

Создание вариации типа

Чтобы создать вариацию типа, откройте редактор тем, затем нажмите значок "плюс" рядом с раскрывающимся списком Type в правой части редактора. Введите название вариации типа темы в текстовое поле и нажмите Add Type.

Под раскрывающимся списком Type находятся вкладки свойств. Переключитесь на вкладку со значком гаечного ключа и отвёртки.

../../_images/base_type.webp

Нажмите на значок «плюс» рядом с полем Base Type. Здесь можно выбрать базовый тип, который обычно является именем класса узла управления (например, Button, Label и т. д.). Вариации типов также могут объединяться в цепочку и расширять другие вариации типов. Это работает аналогично тому, как узлы управления наследуют стили своего базового класса. Например, CheckButton наследует стили от Button, поскольку соответствующие типы узлов расширяют друг друга.

После выбора базового типа вы должны увидеть его свойства на других вкладках редактора темы. Вы можете редактировать их как обычно.

Использование вариации типа

Теперь, когда вариация типа создана, вы можете применить её к своим узлам. В панели инспектора, под свойством Theme узла управления, вы найдёте свойство Theme Type Variation. По умолчанию оно пусто, что означает, что на этот узел влияет только базовый тип.

Вы можете выбрать тип вариации из раскрывающегося списка или ввести его имя вручную. Вариации отображаются в списке только в том случае, если они относятся к теме, общей для всего проекта, которую можно настроить в настройках проекта. В противном случае необходимо ввести имя вариации вручную. Щелкните значок карандаша справа. Затем введите имя вариации и щелкните значок галочки или нажмите Enter. Если тип вариации с таким именем существует, она будет использоваться узлом.