Несколько диалоговых окон (Multiple Character Dialogue)

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

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

e "Ren'Py поддерживает одновременное отображение нескольких строк диалога." (multiple=2)
l "Как раз вовремя! Я ждал этого в течение многих лет." (multiple=2)

Несколько диалоговых окон вызываются, когда в строке диалога указывается аргумент multiple с количеством строк диалога, которые нужно объединить вместе. Таким образом, если у вас multiple=3, то три блока диалога будут объединены.

Несколько диалоговых окон работают, показывая экран say более одного раза, с различными стилями. Каждый экран say отвечает за отображение диалогового окна для одного персонажа.


Есть несколько ограничений для нескольких диалоговых окон:

  • При отображении нескольких диалоговых окон текстовые теги, которые вызывают приостановку текста, такие как {p} и {w}, не будут работать должным образом. Это связано с тем, что каждый экран отображается только один раз, а для работы этих тегов требуется, чтобы экраны отображались несколько раз.
  • Режим авточтения работает только для последнего блока текста. Хотя в большинстве случаев всё должно быть в порядке, это может привести к проблемам, если последний блок текста короче остальных, так как авточтение может включиться раньше.
  • Расширение не будет работать. Это относится только к последнему блоку текста.

Стили (Styles)[править | править код]

Как правило, способ работы нескольких диалоговых окон заключается в отображении экрана say несколько раз, при этом стили различных отображаемых экранов систематически переименовываются, чтобы отразит номер блока и общее количество блоков.

В частности, в нескольких диалоговых окнах используются стили с названиями формы block`n`_multiple`m`_`style`, где n - номер блока, а m - количество блоков диалога, отображаемых одновременно.

В приведенном выше примере окну, соответствующему каждому блоку диалога, присваиваются имена:

  • block1_multiple2_say_window
  • block2_multiple2_say_window


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

say_window
Используется в обычном случае использования одного диалогового окна. Может служить основой для всех диалоговых окон.
multiple2_say_window
Можно использовать для свойств, общих для двух диалоговых окон, таких как изменение фона и уменьшение полей и отступов.
block1_multiple2_say_window
Можно использовать для размещения первого из двух диалоговых окон, например, используя xalign 0.0, можно передвинуть диалоговое окно на левую сторону.
block2_multiple2_say_window
Точно так же это можно использовать, чтобы передвинуть второе диалоговое окно на правую строну, используя xalign 1.0.

Несколько экранов say (The Multiple Say Screen)[править | править код]

Чтобы обеспечить более строгий контроль, вы можете использовать multiple_say screen. При наличии, экран multiple_say используется вместо обычного экрана say. Он принимает третий аргумент, multiple, который является кортежем. Первый компонент кортежа - номер блока, а второй - общее количество экранов.

NVL-режим (NVL-Mode)[править | править код]

По умолчанию NVL-режим отображает несколько текстовых блоков один поверх другого. Это можно настроить, изменив экран nvl, которому передаётся список объектов с несколькими аргументами, которые можно преобразовать и представить.

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

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


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