Анатолий Адонин

Анатолий Адонин 

Разработка на Python / Renpy

372subscribers

84posts

Showcase

16

30 Экраны screen в Renpy

Система экранов (screen) - это, по-моему, одна из самых интересных вещей в Renpy. Благодаря экранам можно создавать различные интерфейсы, инвентари, таблицы и много чего ещё. По сути, экраны screen отвечают за всю визуальную часть движка. Всё, что мы изучали ранее и будем изучать позже так или иначе связано с экранами. Например, вывод диалогового окна, режим NVL, речевые пузыри, кнопки выбора, фоны и спрайты - всё это реализовано с помощью экранов.
Экраны представляют собой слои интерфейса, которые отображаются поверх фона и спрайтов. Они работают независимо от основного потока сценария в label, что позволяет им обновляться и реагировать на действия игрока без остановки повествования.
Чтобы создать экран, используется ключевое слово screen, за которым пишется уникальное имя экрана и необязательные аргументы в скобках. 
screen interface():
Внутри экрана с отступом вправо размещаются различные элементы интерфейса, например, картинки, текст, кнопки и др.
Экраны также как и множество разных лейбов не отображаются в игре по умолчанию. Например, чтобы попасть в определённый лейбл нужно сделать к нему прыжок (jump part_1). Чтобы отобразить созданный экран его нужно показать (show) в нужном месте и лейбле.
То есть мы пишем команду "покажи экран" и его название: show screen interface. По необходимости можем дописать эффект с помощью with, чтобы экран появлялся не резко, а с каким-то эффектом.
Обратите внимание, что экран может быть написан в одном файле, а вызываться любое количество раз из других файлов и лейбов игры. Когда мы пишем команду show screen interface движок сам найдёт в каком файле находится этот экран и отобразит его.
В игре по умолчанию есть файл screens.rpy, в котором прописаны экраны для стандартного интерфейса игры (главное меню, диалоговые окна и пр.). Однако не стоит помещать свои экраны в этот файл, чтобы не захламлять его. Обычно для своих экранов создаётся отдельный файл, или они прописываются в любых других файлах cценария, где это более удобно. В любом случае движок найдёт их.
Порядок написания команд внутри экрана аналогичен лейбам. То, что написано выше внутри экрана отобразится раньше, чем то, что написано ниже, потому что движок будет читать код сверху вниз. В нашем примере Renpy сначала отобразит первую картинку add, которая представляет собой заливку указанным цветом на весь экран. Она служит полупрозрачным фоном. Затем выполнится команда image с другой картинкой (спрайт персонажа), и далее будет отображён текст (верхний левый угол).
Если картинку персонажа мы напишем раньше фоновой заливки, то персонаж отобразится первым, а поверх будет заливка.
Поэтому когда несколько элементов занимают одно и то же место на экране важно соблюдать очерёдность, с которой они будут выводиться.
Команды add и image работают одинаково, и приведены в качестве примера, но обычно для краткости чаще используется команда add.
Чтобы закрыть экран - в нужном месте кода пишем соответствующую команду, как в случае скрытия спрайтов и других элементов (hide).
***
Код из урока:
rpy
screen_example.rpy768 Byte
Предыдущий урок:
29 Как сделать читы в Renpy
Следующий урок:
31 Синтаксис экранов в Renpy (Перевод, модальность, notify)
Все уроки здесь
Subscription levels3

Личный состав

$0.99 per month
Участник экспедиции

Колонист

$2.64 per month
С комфортом до Бетельгейзе

Штурман

$5.3 per month
Штурмуем геймдев - Пошаговые уроки с нуля до профи
Учимся создавать игры на Renpy
Программируем на Python
Go up