33 Контейнеры vbox и hbox в Renpy
Контейнеры в Renpy предназначены для группировки нескольких элементов вместе (текста, кнопок, изображений и т.д.). Ранее, при добавлении нескольких строк в экран, мы для каждой из них писали свою позицию.
Если поместить все строки в один общий контейнер, то позицию можно указать только контейнеру, а все элементы внутри него будут перемещаться вместе с ним. Представьте, что у вас есть несколько яблок на столе. Для их перемещения по плоскости нужно взять каждое и сдвинуть. Вы можете взять коробку, положить яблоки внутрь, и перемещая её сдвигать все яблоки сразу.
В Renpy есть несколько вариантов контейнеров с разным функционалом.
Контейнер vbox (vertical box) выстраивает все вложенные элементы строго вертикально, располагая их сверху вниз в порядке объявления в коде. Его использование можно увидеть в главном меню, где кнопки группируются сверху вниз. Также он может быть полезен при создании инвентарей, списков и других интерфейсов, где важна логическая вертикальная иерархия.
В примере выше мы указали позицию только для контейнера, а все его элементы переместились в центр вместе с ним. Это позволяет значительно ускорить вёрстку, и делает код чище.
Благодаря встроенным параметрам отступов и выравнивания, vbox легко масштабируется. Добавление нового элемента автоматически сдвигает остальные, сохраняя аккуратный вид, без ручной правки координат.
Контейнер hbox (horizontal box) работает аналогично, но раскладывает элементы горизонтально.
На последнем скрине можно заметить, что элементы не имеют отступов между собой, из-за чего они "сбиваются в кучу". Для настройки используются дополнительные параметры:
spacing - устанавливает промежуток между элементами
xfill True (для hbox) - раскладывает элементы таким образом, чтобы они заполняли всё пространство контейнера. yfill True (для xbox)
По умолчанию созданный контейнер имеет размер на весь экран, параметр size позволяет указать точный размер.
box_wrap True - Если все элементы не вмещаются в одну строку, остальные будут перенесены на новую.
null height (для xbox) - позволяет установить промежуток только между двумя элементами. В отличии от spacing, который устанавливает одинаковый промежуток межу всеми элементами. Может быть полезно, например, для отступа заголовка.
null width - аналогичная настройка для hbox
***
Код из урока:
rpy
screen_example.rpy5.86 Kb
Предыдущий урок:
Следующий урок:
Здесь будет ссылка
Здесь будет ссылка
In bundle
renpy
туториалы ренпай
программирование
разработка игр
гайды ренпи
визуальная новелла