角色回調函數 link

對話中的各種事件發生時,Ren’Py都有能力執行回調函數。 這是透過將 callback 入參傳入 Character() 函數或設置 config.character_callbackconfig.all_character_callbacks 配置項實現的。

調用角色回調函數時傳入唯一的固定位置參數,即發生的事件消息。可能的事件消息包括:

“begin”

在某個say語句的開頭處調用。

“show”

顯示每一段對話之前調用。對話可能被文本標籤{w}或{p}分割成多段,沒有那些文本標籤的對話可以理解為1段。

“show_done”

顯示每一段對話之後調用。

“slow_done”

在慢速文本顯示完畢後。注意,這個事件可能會發生在“end”後面,在那種情況下對話不會觸發交互行為。

“end”

在某個say語句的結尾處調用。

調用回調函數時至少包含一個關鍵字入參:

interact

如果對話觸發了某個交互行為,則返回True。

未來可能會加入更多其他的固定位置入參和額外的關鍵字入參。回調函數不能理解的參數將會被忽略。

樣例 link

這個樣例播放“嗶-”代替角色語音,前提是啟用了慢速文本:

init python:
    def beepy_voice(event, interact=True, **kwargs):
        if not interact:
            return

        if event == "show_done":
            renpy.sound.play("beeps.ogg")
        elif event == "slow_done":
            renpy.sound.stop()

define pike = Character("克里斯多福·派克", callback=beepy_voice)

label start:

    pike "在Talos IV附近逛逛,整整我自己的生意,只要……"