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

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

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

372subscribers

84posts

Showcase

16

32 Renpy - Стилизация текста в экранах screen

При написании текста в экране его можно подогнать под общий стиль вашей игры. Для этого используются встроенные параметры, которые можно указать после текста.
Когда параметров очень много их для удобства можно записать в столбик после двоеточия и с отступом вправо. В таком виде это более наглядно.
Все свойства для текста делятся на несколько категорий: оформление шрифта, положение и специальные эффекты. Вот наиболее часто используемые:
size - размер шрифта в пикселях (например, size 24)
color - цвет текста в формате HEX (например, color "#ffffff")
font - путь к файлу шрифта (например, font "fonts/adigianaextreme.ttf")
bold True - включает жирный шрифт
italic True - наклонный шрифт
underline True - подчёркнутый текст
strikethrough True - зачёркнутый текст
outlines [] - обводка текста, задаётся списком [толщина, цвет, смещение_x, смещение_y]. Например, outlines [(2, "#ffffff90", 1, 1 )]
kerning - межбуквенный интервал в пикселях, например kerning 2
align(x, y) - расположение на экране или внутри контейнера, например align(0.5,0.5)
pos(x,y) - также отвечает за расположение на экране. Можно указать как в пикселях, так и в относительных значениях. Например, pos(500,100) или pos(0.5,0.5). Стоит иметь ввиду, что вариант с pos отсчитывает позицию до верхнего левого угла текста или изображения.
Т.е. если вы укажите align(0.5,0.5) то текст или изображение будут отцентрированы точно по центру. Если вы укажите pos(0.5,0.5) - точно по центру будет расположен верхний левый угол текста или изображения.
Чтобы точно центрировать с помощью pos(0.5,0.5) нужно установить на текст или изображение точку, до которой должен быть сделан отсчёт с помощью свойства anchor.
anchor(0.5, 0.5) - устанавливает точку (якорь) на объекте до которой будет производится отсчёт позиции.
Может возникнуть вопрос, зачем нужен pos, если удобней располагать через align, не задумываясь о якоре. В некоторых случаях pos бывает удобней, когда центрирование объекта не обязательно, а нужно сделать точный отступ от края экрана до края объекта. Также в некоторых трансформациях и анимациях необходимо "якорение", чтобы анимации работали точно по нужной траектории.
Вы можете позиционировать любым из вариантов, просто иногда из-за отсутствия якоря расположение объекта может быть не таким как вы планировали, и вы будете знать в чём причина.
slow True - включает эффект печатания текста. Скорость печати зависит от соответствующей настройки в меню игры.
slow_cps - позволяет установить скорость печати, не зависящую от настройки в меню игры. Например, slow_cps 10 (десять символов в секунду).
Данные параметры могут пригодиться когда нужно настроить какой-то один текст в экране. Но представьте, что у вас много разных экранов и много разных строк текста. Для каждой из таких строк вам придётся прописывать одни и те же параметры. Это загромождает скрипт лишним кодом и требует много времени на однотипную работу.
А если в какой то момент вы захотите изменить цвет или шрифт, вам придётся проходится по всему коду и менять у каждой строки соответствующую настройку.
Поэтому обычно используются стили, в которых прописываются все необходимые параметры. А затем возле текста пишется название этого стиля, в котором этот текст должен отобразиться.
Для создания стиля используется ключевое слово style после которого пишется его название. Это работает аналогично тому, как мы писали label с названием или screen с названием.
В примере выше мы создали два стиля, которые хранят внутри разные настройки для текста. Теперь можно применить эти стили к разному тексту в экране:
Если в какой-то момент мы решим сменить дизайн всего текста внутри экрана, нам достаточно отредактировать его стиль, и новые параметры автоматически применяться ко всему тексту с таким стилем.
Если в экране у всего текста должен быть один общий стиль, его можно указать вначале, и весь текст внутри экрана будет его использовать.
Обратите внимание, что в данном случае в названии стиля мы добавили слово text, но при объявлении стиля в экране с префиксом, это слово не указано. Движок будет использовать данный стиль ко всем строкам в экране, являющимися текстом (text). Это нужно для того, чтобы обозначить, к чему именно должен примениться стиль, так как помимо текста стилизовать можно и другие элементы, например кнопки.
Если мы хотим, чтобы весь текст был в общем стиле, но некоторые отдельные строчки нужно немного отредактировать, то рядом с ними можно дописать необходимые параметры, как мы это делали вначале. То есть текст будет иметь общий стиль, а определённый параметр изменить на тот, что указан возле него.
Вы также можете заметить, что каждой строке приходится прописывать свою позицию на экране. Этот момент также можно сократить, если весь текст поместить в контейнер. И прописать контейнеру позицию, которая станет общей для всего текста в нём. Подробнее контейнеры мы разберём в одном из следующих уроков.
***
Код из урока:
rpy
screen_example.rpy5.16 Kb
Предыдущий урок:
31 Синтаксис экранов в Renpy
Следующий урок:
Здесь будет ссылка
Все уроки здесь
Subscription levels3

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

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

Колонист

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

Штурман

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