多角色對話 link

Ren’Py支持同時顯示多個角色的對話。多角色對話使用每行對話結尾的multiple入參喚起。舉例:

e "Ren'Py現在支持並行顯示多行對話了。" (multiple=2)
l "該死的!我等這個功能好多年了。" (multiple=2)

多角色對話會根據對話後面的 multiple 入參數值決定將多個對話行合併。(如果我們設置multiple=3,就將三個對話塊合併。)

多角色對話的運行機制是,使用不同的樣式多次顯示say界面。每個say界面分別對應某一個角色的對話內容。

關於多角色對話有幾條限制:

  • 顯示多角色對話時,能觸發文本暫停的文本標籤(tag),比如{p}和{w}會無效。這是因為每個界面只顯示一次,那些標籤(tag)需要界面顯示多次才能產生效果。

  • 自動前進模式僅在文本的最後一塊生效。大部分情況下自動前進都能表現正常,在最後一塊文本比其他部分都短的情況下可能會導致問題,比如自動前進過早發生。

  • extend分句不會生效。(除非用在最後一塊文本。)

樣式 link

總之,多人對話的運行機制是,使用不同可視組件系統的樣式多次顯示say界面。使用的樣式會根據其對應的對話塊(block)編號和對話塊總數按順序重命名。

多角色對話使用的風格名格式是 blockn_multiplem_stylename ,其中 n 是從1開始的對話塊(block)編號, m 是同時顯示的對話塊總數。

在上面的例子中,對話中每個塊對應的窗口樣式名如下:

  • block1_multiple2_say_window

  • block2_multiple2_say_window

這些命名主題用於對話、角色名和角色名框,以及窗口。此處使用了樣式的繼承功能。我們可以使用的窗口樣式有:

say_window

這個樣式用作單個角色對話窗口的通常情況,提供對話窗口的基礎功能。

multiple2_say_window

這個樣式可以用於兩個對話窗口的common特性(property),像修改背景和減少邊緣(margin)和填充(padding)。

block1_multiple2_say_window

這個樣式可以用於兩個對話窗口中第一個窗口的位置,比如使用xalign為0.0將窗口靠左對齊。

block2_multiple2_say_window

類似的,這個樣式可以用於第二個窗口的位置,比如xalign設置為1.0將窗口靠右對齊。

多角色say界面 link

為了控制更多要素,還存在 multiple_say 界面。當 multiple_say界面存在時,會代替普通的say界面。它多了第三個入參, multiple 元組。元組的第一個元素是對話塊(block)編號,第二個元素是界面的總數。

NVL模式 link

默認情況下,NVL模式從上到下顯示多角色文本塊(block)。通過修改 nvl界面 可以訂製化這個顯示方式。NVL界面使用一個入參對象列表,實現界面元素的組織和展現。