Отображаемые объекты (Displayables)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Displayable – объект, который может быть показан пользователю. Отображаемые объекты в Ren'Py можно использовать по-разному:

  • Присвоение имени изображения с помощью оператора image.
  • Добавить на экран с помощью оператора add языка экрана.
  • Назначение определенным переменным конфигурации.
  • Назначение определенным свойствам стиля.


Когда функция или переменная Ren'Py ожидают отображения, есть пять вещей, которые могут использоваться:

  • Объект типа Displayable, созданный путём вызова одной из функций, указанных ниже.
  • Строка с двоеточием внутри. Их редко используют, но смотрите раздел о отображаемых префиксах.
  • Строка с точкой внутри. Такая строка рассматривается в качестве имени файла Image()
  • Цвет. Цвет может быть задан в виде шестнадцатеричной строки цвета формы "#rgb", "#rgba", "#rrggbb", or "#rrggbbaa", класса Color или кортежа (r, g, b, a), где каждый компонент является целым числом от 0 до 255. Цвета передаются в Solid().
  • Имя изображения. Любая другая строка интерпретируется как ссылка на изображение, определенное с помощью оператора image.
  • Список. Если список предоставлен, каждый элемент распаковывается, как описано ниже, и проверяется, соответствует ли он названию файла или имени изображения. Если это так, расширение останавливается и соответствующие элементы обрабатывается, как описано выше.


Строки могут содержать одну или несколько замен в квадратных скобках, например, eileen [mood] или eileen_[outfit]_[mood].png. Когда такая строка задана, создаётся динамическое изображение. Динамическое изображение имеет текстовую интерполяцию, выполняемую в начале каждого взаимодействия, как, например, операторы say и menu. Полученная строка обрабатывается в соответствии с правилами выше.

Изображения (Images)[править | править код]

Наиболее часто используемый отображаемый объект – Image, который загружает файл с диска и отображает его. Поскольку Image обычно используется, когда строка, задающая имя файла, используется в контексте, который ожидает отображаемый объект, Image создаётся автоматически. Единственный раз, когда необходимо использовать Image напрямую, когда вы хотите создать изображение со свойствами стиля.

Image(filename, **properties)
Загружает изображение из файла. filename – строка, содержащая имя файла.
filename должен быть в формате JPEG или PNG с соответствующим расширением.
# Эти две строчки эквивалентны.
image logo = "logo.png"
image logo = Image("logo.png")

# Использование Image позволяет нам определить положение по умолчанию, как часть
# изображения.
image logo right = Image("logo.png", xalign=1.0)


Рекомендуем использовать три формата графических файлов:

  • WEBP
  • PNG
  • JPG

Не анимированные GIF и BMP файлы тоже поддерживаются, но не должны использоваться в современных играх.


Загрузка Image из файла на диске и его декодирование для отрисовки на экране занимает много времени. Измеряемая в десятых или сотнях секунд, продолжительность процесса загрузки достаточно велика, чтобы избежать приемлемой частоты кадров и стать раздражающей для пользователя.

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

Ren'Py пытается предсказать изображения, которые будут использоваться в будущем, и загружает их в кеш изображений перед их использованием. Если в кеше требуется место для других изображений, Ren'Py удалит изображения, которые больше не используются.

По умолчанию Ren'Py прогнозирует кеширование данных изображений до 8 экранов. Если ваш экран 800x600, то значение данных экрана составляет одно изображение 800x600, два изображения 400x600 и так далее. Это можно изменить с помощью переменной конфигурации config.image_cache_size.

Хотя точное количество зависит от деталей реализации и имеет значительные накладные расходы, как правило, каждый пиксель в кэше изображения потребляет 4 байта основной памяти и 4 байта видеопамяти.

Изображения на подобии отображаемых объектов (Image-Like Displayables)[править | править код]

Мы называем их изображениями на подобии отображаемых объектов, потому что они занимают прямоугольную область экрана и не реагируют на ввод. Они отличаются от обычных изображений изменением их размера для заполнения области (Frame, LiveTile и Solid) или возможностью задать пользователю их размер (LiveComposite, LiveCrop, Null). Они не манипуляторы изображений.

Изображения на подобии отображаемых объектов принимают свойства стиля позиции.


AlphaMask(child, mask, **properties)
Этот отображаемый объект берёт свои цвета из child, а его альфа-канал - от умножения альфа-каналов child и mask. Результатом является отображаемый объект, который имеет те же цвета, что и child, объект прозрачен, если либо child, либо mask прозрачны, и непрозрачен, если child и mask непрозрачны.
Параметры child и mask могут быть атрибутами для отображаемых объектов. Размер AlphaMask – размер child.


Borders(left, top, right, bottom, pad_left=0, pad_top=0, pad_right=0, pad_bottom=0)
Этот объект предоставляет размер рамки и информацию о мозаичном размещение для Frame(). Он также может предоставлять информацию об отступах, которая может быть передана в свойство стиля padding окна или фрейма.
left, top, right, bottom
Обеспечивают размер вставок, используемых фреймом, и добавляют отступы с каждой стороны. Они должны равняться нулю или положительному целому числу.
pad_left, pad_top, pad_right, pad_bottom
Добавляют отступы с каждой стороны и могут быть положительными или отрицательными. Например, если left равен 5 и pad_left равен -3, конечный отступ равен 2.


Информация об отступе задаётся через поле:
padding
Кортеж из четырех элементов, содержащий отступы для каждой из четырех сторон.


Composite(size, *args, **properties)
Создаёт новый отображаемый объект с size, комбинируя другие отображаемые объекты. size – кортеж (ширина, высота).
Оставшиеся позиционные аргументы используются для размещения изображений внутри LiveComposite. Остальные позиционные аргументы входить в группы по два, причём первый член каждой группы – это кортеж (x, y), а второй член группы является отображаемым объектом, который составлен в этой позиции.
Отображаемые объекты составлены от задней части к передней.
image eileen composite = Composite(
    (300, 600),
    (0, 0), "body.png",
    (0, 0), "clothes.png",
    (50, 50), "expression.png")


Crop(rect, child, **properties)
Создает отображаемый объект, обрезая child в rect, где rect – кортеж (x, y, ширина, высота).
image eileen cropped = Crop((0, 0, 300, 300), "eileen happy")


DynamicImage(name)
DynamicImage – отображаемый объект, в котором выполняется интерполяция текста для получения строки, дающей новый отображаемый объект. Такая интерполяция выполняется в начале каждого взаимодействия.


Flatten(child, **properties)
Объединяет child, который может состоять из нескольких текстур, в одну текстуру.
Некоторые операции, такие как свойство альфа-преобразования, применяются к каждой текстуре, составляющей отображаемый объект, что может привести к неправильным результатам, когда текстуры накладываются на экране. Flatten создаёт одну текстуру из нескольких текстур, что может предотвратить эту проблему.
Flatten довольно затратная операция, поэтому её следует использовать только в случае крайней необходимости.


Frame(image, left=0, top=0, right=None, bottom=None, tile=False, **properties)
Отображаемый объект, который изменяет размер изображения для заполнения доступной области, сохраняя при этом ширину и высоту его границ. Часто используется в качестве фона окна или кнопки.
Использование фрейма для изменения размера изображения в два раза.

image
Манипулятор изображения, размер которого будет изменен этим фреймом.
left
Размер границы с левой стороны. Также может быть объектом Borders(), в этом случае этот объект используется вместо других параметров.
top
Размер границы сверху.
right
Размер границы с правой стороны. Если принимает значение None, по умолчанию равен значению left.
bottom
Сторона границы снизу. Если принимает значение None, по умолчанию равен значению top.
tile
Если принимает значение True, мозаичное размещение используется для изменения размера участков изображения, вместо масштабирования.
# Изменение размера фона текстового окна, если он слишком маленький.
init python:
    style.window.background = Frame("frame.png", 10, 10)


Null(width=0, height=0, **properties)
Отображаемый объект, который добавляет на экран пустой блочный элемент. Размер блочного элемента задаётся width и height. Может использовать, когда отображаемому объекту необходим дочерний элемент, но ни один дочерний элемент не подходит, или в качестве разделителя внутри блочного элемента.
image logo spaced = HBox("logo.png", Null(width=100), "logo.png")


Solid(color, **properties)
Отображаемый объект, который заполняет область, назначенную ему color.
image white = Solid("#fff")


Tile(child, style='tile', **properties)
Мозаичное размещение child, пока она не заполнит область, выделенную для этого отображения.
image bg tile = Tile("bg.png")

Текст, как отображаемые объекты (Text Displayables)[править | править код]

Смотри раздел «Текст, как отображаемые объекты».

Динамические отображаемые объекты (Dynamic Displayables)[править | править код]

Динамические отображаемые объекты показывают дочерний отображаемый объект, основанный на состоянии игры. Они не принимают никаких свойств, так как их расположение управляется свойствами дочернего отображаемого объекта, который они возвращают.

Обратите внимание, что эти динамические отображаемые объекты всегда отображают своё текущее состояние. Из-за этого динамический отображаемый объект не будет участвовать в переходе. Точнее, он будет отображать одно и то же как в старых, так и в новых состояниях перехода.

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


ConditionSwitch(*args, predict_all=None, **properties)
Отображаемый объект, который изменяет то, что он показывает, основываясь на условиях языка Python. Позиционные аргументы должны быть заданы в группах по два, где каждая группа состоит из:
  • Строки, содержащей условие языка Python.
  • Отображаемого объекта для использования, если условие истинно.
Первое истинное условие покажет свой отображаемый объект, хотя бы одно условие должно быть истинным.
Используемые здесь условия не должны иметь внешне видимых побочных эффектов.
predict_all
Если принимает значение True, то все возможные отображаемые объекты будут предсказаны при показе отображаемого объекта. Если принимает значение False, прогнозируется только текущее состояние. Если принимает значение None, используется config.conditionswitch_predict_all.
image jill = ConditionSwitch(
    "jill_beers > 4", "jill_drunk.png",
    "True", "jill_sober.png")


DynamicDisplayable(function, *args, **kwargs)
Отображаемый объект, который может изменить свой дочерний элемент на основе функции Python в ходе взаимодействия.
function
Функция, которая вызывается с аргументами:
  • Время показа отображаемого объекта.
  • Время показа отображаемого объекта с таким же тегом.
  • Любые позиционные или именованные аргументы, предоставленные DynamicDisplayable.
и должна возвращать кортеж (d, redraw), где:
  • d – отображаемый объект для показа.
  • redraw - время ожидания перед повторным вызовом функции или значение None, чтобы снова не вызывать функцию до начала следующего взаимодействия.
function вызывается в начале каждого взаимодействия.
В особом случае function также может быть строкой python, которая вычисляется как отображаемый объект. В этом случае функция выполняется один раз за взаимодействие.
# Показывает обратный отсчет от 5 до 0, обновляя его каждую десятую 
# секунды до истечения времени.

init python:

    def show_countdown(st, at):
        if st > 5.0:
            return Text("0.0"), None
        else:
            d = Text("{:.1f}".format(5.0 - st))
            return d, 0.1

image countdown = DynamicDisplayable(show_countdown)


ShowingSwitch(*args, predict_all=None, **properties)
Отображаемый объект, который изменяет то, что он показывает, основываясь на изображениях, показанных на экране. Позиционный аргумент должен быть задан в группах по два, где каждая группа состоит из:
  • Строки с именем изображения или значение None для указания значения по умолчанию.
  • Отображаемого объекта для использования, если условие истинно.
Необходимо указать изображение по умолчанию.
predict_all
Если принимает значение True, то все возможные отображаемые объекты будут предсказаны при показе отображаемого объекта. Если принимает значение False, прогнозируется только текущее состояние. Если принимает значение None, используется config.conditionswitch_predict_all.


Одним из применений ShowingSwitch является изменение боковых изображений в зависимости от текущей эмоции персонажа. Например:
define e = Character("Эйлин",
    show_side_image=ShowingSwitch(
        "eileen happy", Image("eileen_happy_side.png", xalign=1.0, yalign=1.0),
        "eileen vhappy", Image("eileen_vhappy_side.png", xalign=1.0, yalign=1.0),
        None, Image("eileen_happy_default.png", xalign=1.0, yalign=1.0),
        )
    )

Применение преобразований к отображаемым объектам (Applying Transforms to Displayables)[править | править код]

Функция at создаёт отображаемый объект из отображаемого объекта и одного или нескольких преобразований.

At(d, *args)
Учитывая отображаемый объект d, применяет к нему каждое из преобразований в args. Преобразования применяются в порядке слева направо, так что наиболее удалённое преобразование является самым крайним аргументом.
transform birds_transform:
     xpos -200
     linear 10 xpos 800
     pause 20
     repeat

image birds = At("birds.png", birds_transform)

Макетные блочные элементы и сетки (Layout Boxes and Grids)[править | править код]

Макетные блочные элементы – отображаемые объекты, которые размещаю свои дочерние элементы на экране. Они могу расположить дочерние элементы горизонтально или вертикально, или могут расположить их, используя стандартный алгоритм позиционирования.

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

Блочные элементы принимают свойства стиля позиции и Свойства стиля блочного элемента.


Fixed(*args, **properties)
Блочный элемент, который заполняет экран. Его элементы располагаются от задней части к передней, задавая положение с помощью свойства позиции.


HBox(*args, **properties)
Блочный элемент, который располагает свои элементы слева направо.


VBox(*args, **properties)
Макет, который размещает свои элементы сверху вниз.
# Отображение двух логотипов, слева и справа друг от друга.
image logo hbox = HBox("logo.png", "logo.png")

# Отображение двух логотипов, один поверх другого.
image logo vbox = VBox("logo.png", "logo.png")

# Отображение двух логотипов. Так как оба по умолчанию находятся в верхнем левом углу экрана,
# нам нужно использовать Image для размещения
# этих логотипов на экране.
image logo fixed = Fixed(
    Image("logo.png", xalign=0.0, yalign=0.0),
    Image("logo.png", xalign=1.0, yalign=1.0))


Макет Grid отображает свои дочерние элементы на экране в виде сетки. Она принимает свойства стиля позиции и свойство стиля spacing.

Grid(*args, **properties)
Располагает отображаемые объекты в сетке. Первые два позиционных аргумента являются количеством столбцов и строк в сетке. После этого должны следовать позиционные аргументы columns * rows, задающие отображаемые объекты, заполняющие сетку.

Эффекты (Effects)[править | править код]

Эти отображаемые объекты используют для создания определённых визуальных эффектов.

AlphaBlend(control, old, new, alpha=False)
Этот переход использует отображаемый объект control (почти всегда своего рода анимированное преобразование) для перехода от одного отображаемого объекта к другому. Проводится оценка преобразования. Отображаемый объект new используют, когда преобразование непрозрачно, а отображаемый объект old используют, когда оно прозрачно.
alpha
Если принимает значение True, изображение компонуется из того, что находится за ним. Если принимает значение False, по умолчанию изображение непрозрачно и перезаписывает то, что за ним.

Манипуляторы изображений (Image Manipulators)[править | править код]

Манипулятор изображений – отображаемый объект, который берет изображение или манипулятор изображения и либо загружает его, либо выполняет над ним операцию. В качестве входных данных манипуляторы изображений могут принимать только изображения или другие манипуляторы изображений.

Манипулятор изображения можно использовать в любом месте, где можно использовать отображаемый объект, но не наоборот. Image() является своего рода манипулятором изображений, поэтому Image можно использовать всякий раз, когда требуется манипулятор изображения.

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


im.AlphaMask(base, mask, **properties)
Манипулятор изображения, который принимает в качестве аргументов два манипулятора изображения, base и mask. Он заменяет альфа-канал base красным каналом mask.
Используется для создания альфа-канала изображения во втором изображении, например, с одним jpeg для цветных данных и вторым для альфа-канала. В некоторых случаях два jpeg файла могут быть меньше, чем один png файл.
Обратите внимание, что он принимает различные аргументы от AlphaMask(), который использует альфа-канал маски.


im.Blur(im, xrad, yrad=None, **properties)
Манипулятор изображений, который размывает манипулятор изображений im с помощью эллиптического ядра, описанного xrad и, возможно, yrad.
Если yrad принимает значение None, он примет значение xrad, что приведёт к использованию кругового ядра.
image logo blurred = im.Blur("logo.png", 1.5)


im.Crop(im, rect)
Манипулятор изображений, который обрезает rect, используя кортеж (x, y, ширина, высота) из манипулятора изображения im.
image logo crop = im.Crop("logo.png", (0, 0, 100, 307))


im.Data(data, filename, **properties)
Манипулятор изображений загружает изображение из двоичных данных.
data
Строка байтов, предоставляющая сжатые данные изображения в стандартном формате файла.
filename
«Имя файла», связанное с изображением. Используется для предоставления подсказки Ren'Py о формате data. На самом деле не загружается с диска.


im.FactorScale(im, width, height=None, bilinear=True, **properties)
Манипулятор изображения, который масштабирует im (второй манипулятор изображения) до width, умноженной на первоначальную ширину, и height, умноженной на первоначальную высоту. Если height не указана, по умолчанию используется width.
Если bilinear принимает значение True, то для масштабирования используется билинейная интерполяция. Иначе используется интерполяция ближайшего соседа.
image logo doubled = im.FactorScale("logo.png", 1.5)


im.Flip(im, horizontal=False, vertical=False, **properties)
Манипулятор изображений, который переворачивает im (манипулятор изображений) вертикально или горизонтально. vertical и horizontal управляют направлениями, в которых изображение переворачивается.
image eileen flip = im.Flip("eileen_happy.png", vertical=True)


im.Grayscale(im, **properties)
Манипулятор изображения, который создаёт обесцвеченную версию манипулятора изображения im.


im.Sepia(im, **properties)
Манипулятор изображения, который создаёт сепия тонированную версию манипулятора изображения im.


im.Tile(im, size=None, **properties)
Манипулятор изображения, который разбивает манипулятор изображения im, до тех пор, пока он не станет размером size.
size
Если принимает значение не None, то кортеж (ширина, высота). Если принимает значение None, по умолчанию используется (config.screen_width, config.screen_height).

Манипулятор изображения im.MatrixColor (im.MatrixColor)[править | править код]

Манипулятор изображения im.MatrixColor – манипулятор изображения, который использует матрицу для управления преобразованием цветов изображения. Используемая матрица может быть объектом im.matrix, который кодирует матрицу 5x5 в объекте, поддерживающем умножение матриц, и возвращается рядом функций. Объекты im.matrix могут быть перемножены для получения второго объекта, который выполняет обе операции. Например, код:

image city blue = im.MatrixColor(
    "city.jpg",
    im.matrix.desaturate() * im.matrix.tint(0.9, 0.9, 1.0))

сначала обесцвечивает изображение, а затем придаёт оттенок синего. Когда промежуточное изображение не требуется, перемножение матриц намного эффективнее и по времени и по занимаемому размеру в кеше изображений, чем использование двух im.MatrixColor.


im.MatrixColor(im, matrix, **properties)
Оператор изображения, который использует matrix для линейного преобразования манипулятора изображения im.
Matrix должен быть списком, кортежем или im.matrix(), который состоит из 20 или 25 элементов. Если объект имеет 25 элементов, то элементы после 20-го игнорируются.
Когда четыре компонента исходного цвета являются R, G, B и A, диапазоном от 0.0 до 1.0; четыре компонента преобразованного цвета R', G', B' и A' с одинаковым диапазоном, и элементы матрицы называются:
[ a, b, c, d, e,
  f, g, h, i, j,
  k, l, m, n, o,
  p, q, r, s, t ]
преобразованные цвета можно рассчитать по формуле:
R' = (a * R) + (b * G) + (c * B) + (d * A) + e
G' = (f * R) + (g * G) + (h * B) + (i * A) + j
B' = (k * R) + (l * G) + (m * B) + (n * A) + o
A' = (p * R) + (q * G) + (r * B) + (s * A) + t
Компоненты преобразованного цвета фиксируются в диапазоне [0.0, 1.0].


im.matrix()
Создаёт объект im.matrix из matrix. Объекты im.matrix поддерживают следующие операции: матричное умножение, скалярное умножение, поэлементное сложение и поэлементное вычитание. Эти операции вызываются с помощью стандартных математических операторов (*, *, + и -, соответственно). Если перемножаются два объекта im.matrix, выполняется матричное умножение, иначе выполняется скалярное умножение.
matrix представляет собой список из 20 или 25 элементов или кортеж. Если его длина 20 элементов, он дополняется (0, 0, 0, 0, 1), чтобы получить матрицу 5x5, подходящую для умножения.


im.matrix.brightness(b)
Возвращает im.matrix, который изменяет яркость изображения.
b
Величина изменения яркости изображения. Должно быть число между -1 и 1, где -1 самоё тёмное изображение, а 1 самое светлое.


im.matrix.colorize(black_color, white_color)
Возвращает im.matrix, который раскрашивает черно-белое изображение. black_color и white_color – цвета стиля Ren'Py, поэтому они могут быть заданы в виде строк или кортежей значений цвета (0-255).
# Делает черные цвета красными, а белые – синими.
image logo colored = im.MatrixColor(
    "bwlogo.png",
    im.matrix.colorize("#f00", "#00f"))


im.matrix.contrast(c)
Возвращает im.matrix, который изменяет контрастность изображения. c должен быть больше чем 0.0, значения от 0.0 до 1.0 уменьшают контраст, а значения больше чем 1.0, увеличивают контраст.


im.matrix.desaturate()
Возвращает im.matrix, который обесцвечивает изображение (делает его в оттенках серого). Эквивалентно вызову im.matrix.saturation(0).


im.matrix.hue(h)
Возвращает im.matrix, который поворачивает оттенок на h градусов, сохраняя при этом яркость.


im.matrix.identity()
Возвращает единичную матрицу, которая не изменяет цвет или альфу.


im.matrix.invert()
Возвращает im.matrix, который инвертирует красный, зелёный и синий каналы изображения без изменения альфа-канала.


im.matrix.opacity(o)
Возвращает im.matrix, который изменяет непрозрачность изображения. Значение 0.0 делает o полностью прозрачным, в то время как 1.0 полностью непрозрачным.


im.matrix.saturation(level, desat=(0.2126, 0.7152, 0.0722))
Возвращает im.matrix, который изменяет насыщенность изображения. Альфа-канал остаётся нетронутым.
level
Уровень насыщенности в конечном изображении. 1.0 эквивалентно неизменённому изображению, а 0.0 – изображение в оттенках серого.
desat
Трехэлементный кортеж, который контролирует, сколько красного, зеленого и синего каналов будет помещено во все три канала полностью ненасыщенного изображения. Значение по умолчанию основано на константах, используемых для канала яркости телевизионного сигнала NTSC. Поскольку человеческий глаз в основном чувствителен к зелёному цвету, сохраняется больше зеленого канала, чем два других канала.


im.matrix.tint(r, g, b)
Возвращает im.matrix, который окрашивает изображение без изменения альфа-канала. r, g и b должны быть числами от 0 до 1 и контролировать, какая доля данного канала будет передана в конечное изображение. Например, если r равно .5, а значение красного канала равно 100, у преобразованного цвета значение красного будет равно 50.

Заполнители (Placeholders)[править | править код]

Отображаемый объект-заполнитель при необходимости используется для отображения фона или изображений персонажей. Заполнители используются автоматически, когда в режиме разработчика используется неопределенное изображение. Отображаемые объекты-заполнители также можно использовать вручную, если значения по умолчанию не подходят.

# По умолчанию в качестве заполнителя используется изображение девушки.
image sue = Placeholder("boy")

label start:
     show sue angry
     "Сью" "Как дела? Теперь ты умрёшь!"


Placeholder(base=None, full=False, flip=None, **properties)
Этот отображаемый объект может использоваться для отображения персонажа-заполнителя или фона.
base
Тип изображения для отображения. Должен быть одним из:
'bg'
Для отображения фона-заполнителя. В настоящее время он заполняет экран светло-серым цветом и отображает имя изображения в верхней части экрана.
'boy'
Показывает изображения парня в качестве заполнителя с именем изображения на груди.
'girl'
Показывает изображения девушки в качестве заполнителя с именем изображения на груди.
None
Автоматически пытается определить тип изображения, который нужно использовать. Если имя изображения начинается с "bg", "cg" или "event", используется 'bg'.
Иначе связывается с веб-сервисом, чтобы угадать пол по имени персонажа, и использует его. (Когда сервис не может отгадать, используется заполнитель 'girl'.)
Установка связи с веб-сервисом будет только, если config.developer примет значение True.
full
Если принимает значение True, используется спрайт во весь рост. Иначе используется 3/4 спрайта.
flip
Если принимает значение True, спрайт переворачивается по горизонтали.

Отображаемые префиксы (Displayable Prefixes)[править | править код]

Отображаемые префиксы позволяют разработчику определять свои собственные отображаемые объекты и ссылаться на них везде, где отображаемый объект может использоваться в Ren'Py. Отображаемый префикс – строка с двоеточием. Префикс находится слева от двоеточия, а аргумент - справа от него. Переменная config.displayable_prefix отображает префикс для функции. Функция принимает аргумент и либо возвращает отображаемый объект, либо None.

Например, этот код заставляет большой префикс возвращать изображение, которое в два раза больше оригинала.

init -10 python:
    def embiggen(s):
        return Transform(s, zoom=2)

    config.displayable_prefix["big"] = embiggen

Init -10 гарантирует, что префикс определен перед любыми изображениями, которые его используют. Затем префикс можно использовать для определения изображений:

image eileen big = "big:eileen happy"

или в любом другом месте, где требуется отображаемый объект.

Источник[править | править код]

Статья "Displayables" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи