界面行為(action)、值(value)和函數 link
Ren’Py帶來了一大堆行為、值和函數,與界面和界面語言協同作用。
行為(action) link
當某個按鈕(包括圖片按鈕、文本按鈕和hotspot按鈕)被啟用、被滑鼠懸停或失去滑鼠懸停狀態時,某個行為(action)就會被喚起。當某個按鈕被選中或者非啟用時,行為(action)就可能已經決定了。
與這些行為一樣,某個行為可以是一個不帶任何入參的函數。當行為被喚起時,對應的函數就會調用。如果那個行為返回某個值,返回的值就會傳到來源交互動作。
需要使用行為的地方也可能出現的是一個行為的列表,列表內的行為會順序執行。
只有列表中的行為都是sensitive狀態時,列表自身才是sensitive狀態。selected狀態同理。
除非列表中某些行為使用了 SensitiveIf()
或 SelectedIf()
來決定自身狀態。
控制行為 link
這些行為用於管理界面,交互結果和流程控制。
- Call(label, *args, **kwargs) link
結束當前語句,並調用某個腳本標籤(label)。入參和關鍵字參數會傳給
renpy.call()
。
- Hide(screen=None, transition=None, _layer=None) link
如果名為 screen 的界面已經顯示,則隱藏這個界面。
- screen
若為字串,表示待隱藏界面的名稱。若為None,表示待隱藏界面為當前界面。
- transition
如果非None,隱藏界面時使用轉場(transition)。
- _layer
該項將作為layer參數傳入
renpy.hide_screen()
。若該項為None則忽略。
- Jump(label) link
觸發主控流程轉到腳本標籤 label 處。
- NullAction(*args, **kwargs) link
不做任何事。
可以用作某個按鈕的“滑鼠懸停/滑鼠離開”事件響應,不執行任何行為。
- Return(value=None) link
使用提供的值返回給當前的互動行為,提供的值不可以為None。常用於菜單和imagemap,用來選擇交互行為的返回值。如果使用的是
call screen
語句調用界面,返回值就會放置在 _return 變數中。如果出現在某個菜單中,值會返回給來源菜單。(這種情況下就需要返回None。)
- Show(screen, transition=None, *args, **kwargs) link
觸發另一個界面的顯示。 screen 是給定待顯示的界面名。入參會傳給正在顯示的界面。
如果 transition 非空,則會用作新界面顯示時的轉場效果。
該行為可以使用 _layer、_zorder 和 _tag 關鍵字入參。各參數的意義與
renpy.show_screen()
函數相同。
- ShowTransient(screen, transition=None, *args, **kwargs) link
顯示一個臨時界面。臨時界面會在當前交互完成後隱藏。入參會傳給當前顯示的界面。
如果 transition* 非空,則會用作新界面顯示時的轉場效果。
該行為可以使用 _layer、_zorder 和 _tag 關鍵字入參。各參數的意義與
renpy.show_screen()
函數相同。
- ToggleScreen(screen, transition=None, *args, **kwargs) link
切換界面的可視性。如果某個界面當前沒有顯示,則會使用提供的入參顯示那個界面。相反,則隱藏那個界面。
如果 transition 非空,則會用作新界面顯示時的轉場效果。
該行為可以使用 _layer、_zorder 和 _tag 關鍵字入參。各參數的意義與
renpy.show_screen()
函數相同。
數據行為 link
下表中列出了一些常用數據行為(Data Action),根據數據類型、作用域等特徵做了分類:
管理器 |
訪問器 |
||||
---|---|---|---|---|---|
Variable |
ScreenVariable |
LocalVariable |
Field |
Dict |
|
Set |
|||||
Toggle |
|||||
Cycle |
|||||
Increment |
訪問器決定“誰”的數值發生變化,管理器決定新值的結果。具體關係如下:
-Variable 類行為,會在通用儲存空間中尋找 name 同名的全局變數, 並修改該變數的值。name 參數必須是一個字串。其可以是一個簡單的變數名,比如“strength”。也可以是使用英文符號“.”的某些變數的欄位, 比如“hero.strength”或“persistent.show_cutscenes”。
-ScreenVariable 類行為, 會在當前最上層(通常是獲得焦點的)界面中尋找 name 同名的變數,並修改該變數的值。 如果該變數所在界面被多個界面使用 use 引用,則修改之後會同時在各界面產生效果。
-LocalVariable (SetLocalVariable, ToggleLocalVariable, CycleLocalVariable, IncrementLocalVariable)`類行為, 會在使用該行為的界面內尋找 `name 同名的本地變數,並修改該變數的值。僅在某個界面且被其他界面使用 use 引用時(詳見 use),才適合使用該行為。 其他更多情況時,更推薦使用 -ScreenVariable 類行為。後者還有更好的性能表現和更多的界面快取資訊。 -LocalVariable 類行為僅能創建在變數所屬的上下文中,且不能賦值到其他地方。
-Field 類行為, 能修改 object 對象中名為 field 的欄位。
-Dict 類行為, 可以修改字典 dict 中的鍵 key 對應的值
dict[key]
。該類行為也可以修改類表。
Set- 類行為, 直接把目標值改為 value 入參的值。注意,
set
項沒有任何操作,其是Python內建類型。總結起來,target = value
。Toggle- 類行為, 可以切換目標的布爾值。可切換範圍為 true_value (需要指定,未指定則為None)和 false_value (同上)。 如果 true_value 和 false_value 都是None,則執行
target = not target
。Cycle- 類行為, 會循環獲取 values 中的元素。values 必須是一個非空序列(列表、元組或數值範圍)。 如果行為運行時,目標的值沒有匹配到序列中的任何元素,則將目標的值設置為序列中的第一個元素。 loop 參數(預設為True)決定 values 越界的處理方式:若為True則會從頭開始,若為False則拋出異常。 reverse 參數(預設為False)會翻轉序列元素順序。
Increment- 類行為, 會將目標數值增加一個 amount 的量。amount 預設值為1,且可以任何與目標相容的數據類型。
target = target + amount
。
下列行為不符合上表的規則。其中一些會用到Python的 set
類型數據,但又與上面的 Set- 類行為不一樣。
這些行為設置或者切換數據。
- AddToSet(set, value) link
將 value 添加到 set 中。
- set
待添加元素的集合。其可以是一個Python的集合或者列表數據列表。如果是列表的話,新增的值會追加到列表結尾。
- value
待添加或追加的值。
- RemoveFromSet(set, value) link
將 value 從 set 中移除。
- set
待移除元素的集合,可以是一個集(set)或者列表(list)型數據。
- value
待移除的元素。
- ToggleSetMembership(set, value) link
切換集 set 中 value 的成員。如果對應的值在集裡不存在,會添加那個值到集合中。否則,就會移動那個值。
帶有這個行為的按鈕會被標記為被選中(selected)狀態,僅當那個值存在於集 set 中。
- set
待添加或移除成員的集合。其可以是一個集(set)或列表(list)。如果是列表,就會在列表中結尾添加新元素。
- value
需要添加的值。
文件行為 link
這些行為會處理文件的保存、讀取和刪除。其中很多都是用 name 和 page 入參。
- name
待保存內容的檔案名。其可以是一個字串或者一個整數。與 page 拼接用於待創建文件的名稱。
- page
行為實際執行的頁面(page)。其值是“auto”、“quick”或者一個正整數。若為None,page的值會根據持久化頁面編號自動確定。
如果設置了 config.file_slotname_callback
,則會使用該配置項作為存檔槽位名稱。
- FileAction(name, page=None, **kwargs) link
對存檔文件“進行正確操作”。這意味著在load界面顯示時進行存檔文件讀取操作,相反在save界面顯示時進行存檔文件保存操作。
- name
存檔或讀檔時,槽位的名稱。如果為None,一個未被使用的槽位(基於當前時間的巨大數字)就會被使用。
- page
存檔或讀檔時使用的頁面編號(page)。若為None,就使用當前頁面。
其他關鍵字入參會傳給FileLoad或者FileSave。
- FileDelete(name, confirm=True, page=None, slot=False) link
刪除存檔文件。
- name
要刪除的存檔槽名稱。
- confirm
若為True,刪除存檔文件前提示用戶確認。
- page
存檔或讀檔時使用的頁面編號(page)。若為None,就使用當前頁面。
- slot
若為True,直接使用 name 作為存檔槽位名,忽略 page。
- FileLoad(name, confirm=True, page=None, newest=True, cycle=False, slot=False) link
讀取存檔文件。
- name
讀取的槽位名稱。若為None,an unused slot the file will not be loadable。
- confirm
如果為True且當前不在主選單,在讀取存檔文件前提是用戶確認。
- page
存檔文件讀取的頁面編號。如果為None,就是用當前頁面。
- newest
如果為True,按鈕會被選中,前提是其為最新的存檔文件。
- cycle
忽略。
- slot
若為True,直接使用 name 作為存檔槽位名,忽略 page。
- FilePage(page) link
將存檔文件頁面設置為 page ,其可以是“auto”、“quick”或一個整數。
- FilePageNext(max=None, wrap=False) link
前往下一個存檔文件頁面(page)。
- max
若該值存在,應該是整數,給定了我們前往的存檔文件最大頁面編號。
- wrap
若為True,我們可以從存檔文件最後的頁面前往第一頁面,前提是設置了頁面最大編號。
- auto
若此參數和 warp 都為True,將會把玩家帶往自動存檔頁。
- quick
若此參數和 warp 都為True,將會把玩家帶往快速存檔頁。
- FilePagePrevious(max=None, wrap=False, auto=True, quick=True) link
前往上一個存檔文件頁面,前提是上一個頁面存在的話。
- max
若該值存在,應該是整數,給定了我們前往的存檔文件最大頁面編號。需要啟用wrap。
- wrap
若為True,我們可以從存檔文件第一頁面前往最後的頁面,前提是設置了頁面最大編號。
- auto
若此參數和 warp 都為True,將會把玩家帶往自動存檔頁。
- quick
若此參數和 warp 都為True,將會把玩家帶往快速存檔頁。
- FileSave(name, confirm=True, newest=True, page=None, cycle=False, slot=False, action=None) link
保存存檔文件。
如果某個存檔被標記為最新存檔,那該存檔對應的按鈕將處於選中狀態。
- name
待存檔的槽位名。如果為None,一個未被使用的槽位(基於當前時間的巨大數字)就會被使用。
- confirm
若為True,覆蓋存檔文件前提示用戶確認。
- newest
忽略。
- page
槽位所在頁面名稱。若為None,使用當前頁面。
- cycle
如果為True,在提供的頁面上存檔會循環使用而並不會顯示給用戶看。
config.quicksave_slots
配置了循環使用的槽位。- slot
若為True,使用 name 參數,而忽略 page 參數。
- action
存檔成功完成後執行的一個行為。
- FileTakeScreenshot() link
當遊戲存檔時,截取螢幕快照並使用。通常使用存檔界面顯示之前的界面截圖,用作存檔的快照。
- QuickLoad(confirm=True) link
快速讀檔。
- confirm
若為True,且目前不在主選單界面,讀檔前提是用戶確認。
- QuickSave(message='Quick save complete.', newest=False) link
快速存檔。
- message
當快速存檔完成時向用戶顯示的一條資訊。
- newest
設置為True用於標記快速存檔為最新的存檔。
同步行為 link
- DownloadSync() link
該行為會從Ren’Py同步伺服器端下載數據並同步。
- UploadSync() link
該行為會將最後存檔文件上傳到Ren’Py同步伺服器端。
音訊行為 link
關於音訊通道(channel)的概念和工作機制,大多數資訊都可以在 音訊 中找到解釋。
- GetMixer(mixer, db=False) link
返回 mixer 的音量值。
- db
若為True,返回的音量值單位為分辨。 若為預設值False,音量值介於0.0與1.0之間。
- PauseAudio(channel, value=True) link
音訊通道 channel 設置暫停標識(flag)。
如果 value 為True,通道channel會暫停。相反,通道channel會從暫停恢復。如果值為“toggle”,暫停標識會進行切換,即布爾值進行“邏輯非”操作。
- Play(channel, file, selected=None, **kwargs) link
在指定通道(channel)播放一個音訊檔案。
- channel
播放使用的通道(channel)。
- file
播放的文件。
- selected
若為True,當文件在通道上播放時,使用這個行為的按鈕會被標記為“被選中”。若為False,這個行為不會觸發按鈕啟動播放。若為None,當通道是一個音樂(music)通道時按鈕會被標記為“被選中”。
其他關鍵字參數會被傳給
renpy.music.play()
。
- Queue(channel, file, **kwargs) link
在給定的通道上將音訊檔案隊列化。
- channel
播放使用的通道(channel)。
- file
播放的文件。
其他關鍵字參數會被傳給
renpy.music.queue()
。
- SetMixer(mixer, volume) link
將 mixer 的音量設定為 value 。
- mixer
需要調整音量的混合器(mixer)。這個字串通常是“main”、“music”、“sfx”或“voice”。混合器的資訊詳見 音量 。
- value
調整的目標音量值。是一個位於0.0至1.0閉區間內的數值。
- SetMute(mixer, mute) link
將一個或多個混合器設置為靜音狀態。當混合器靜音時,與混合器關聯的音訊通道會停止播放音訊。
- mixer
給出單個混合器名稱的字串,或一個混合器列表名稱的字串列表。混合器名稱通常是“music”、“sfx”或“voice”。
- mute
若為True則靜音混合器,若為False則取消混合器靜音。
- Stop(channel, **kwargs) link
停用某個音訊通道。
- channel
停用的音訊通道名。
關鍵字參數會傳給 :func:renpy.music.stop()。
- ToggleMute(mixer) link
切換混合器的靜音狀態。
- mixer
單個混合器名稱的字串,或一個混合器列表名稱的字串列表。混合器名稱通常是“music”、“sfx”或“voice”。
獲取焦點行為 link
- CaptureFocus(name='default') link
若某個可視組件獲得焦點並執行該行為,將儲存一塊包含可視組件的矩形區域,並根據入參 name 命名。 該矩形區域可通過
GetFocusRect()
或 nearrect 組件的 focus 特性訪問。 若沒有可視組件獲得焦點,上次捕獲的矩形區域將從儲存區移除。- name
獲得焦點矩形區域儲存名稱。其應是一個字串。 如果設置為“tooltip”則比較特殊,當提示消息改變時,將執行自動捕獲。
- ClearFocus(name='default') link
使用
CaptureFocus()
函數清除儲存的矩形區域焦點。
- GetFocusRect(name='default') link
若指定名稱的矩形區域在儲存區中(無論是使用
CaptureFocus()
捕獲還是tooltip自動捕獲),返回一個(x, y, h, w)形式的矩形。否則返回None。- name
獲得焦點矩形區域檢索名稱。其應是一個字串。 如果設置為“tooltip”則比較特殊,當提示消息改變時,將執行自動捕獲。
- ToggleFocus(name='default') link
若焦點矩形區域存在則清除,否則捕獲。
- name
獲得焦點矩形區域儲存名稱。其應是一個字串。 如果設置為“tooltip”則比較特殊,當提示消息改變時,將執行自動捕獲。
其他行為 link
這些是其他地方找不到的一些行為。
- Confirm(prompt, yes, no=None, confirm_selected=False) link
提示用戶進行確認的一種行為。如果用戶點擊了“是”,將執行 yes 行為。否則,執行 no 行為。
- prompt
向用戶顯示的提示內容。
- confirm_selected
若為True,當yes行為被選中後,提示 prompt 依然會顯示。若為False,也是預設值, yes 行為選中後提示就不再顯示。
這個行為的可用性和可選擇性與 yes 行為相匹配。
該行為還有個函數版本
renpy.confirm()
。
- CopyToClipboard(s) link
將字串 s 複製到系統剪貼板。該行為只能在電腦和手機上運行,Web平台無法正常運行。
- DisableAllInputValues() link
禁用所有活動的輸入項。如果存在默認輸入項的話,它將重新獲得焦點。否則,任何輸入項都不會獲得焦點。
- EditFile(filename=None, line=1) link
要求Ren’Py在文本編輯器中打開指定文件。 該行為僅在某些平台能運行。
- filename
指定要打開文件的檔案名。若為None,則使用當前使用的檔案名和文件行數,line 參數將被忽略。
- line
一個數字。打開文件後,游標(cursor)會移動到 line 對應的行開頭。
- ExecJS(code) link
執行指定的JavaScript代碼。僅支持Web平台。在其他平台運行會拋出異常。 JS腳本會在窗口上下文中非同步執行,返回結果不能通過該行為獲得。
- code
待執行的JaveScript代碼。
- Function(callable, *args, _update_screens=True, **kwargs) link
這個行為會 調用 callable(*args, **kwargs) 。
- callable
可調用的對象。該項假設遇到兩個相等的可調用對象,調用任意一個都是相同的。
- args
傳給 callable 的固定位置入參。
- kwargs
傳給 callable 的關鍵字入參。
- _update_screens
若為True,在函數返回後重啟互動系統並更新界面。
這個行為使用一個可選的 _update_screens 關鍵字參數,而且這個參數預設為True。參數為True時,函數返回後,互動行動會重新開始,各界面會更新。
如果函數返回一個非空值,互動行為會停止並返回那個值。(使用call screen語句得到的返回值放置在 _return 變數中。)
創作者可以從
Action
派生自己的子類,並替代此Function函數。 這樣就可以自己命名行為,並判斷對應組件是否選中和可啟用的。
- Help(help=None) link
顯示幫助。
- help
用於提供幫助的字串。其被用於以下兩種情況:
如果存在一個對應名稱的文本標籤(label),對應的標籤會在新的上下文中被調用。
否則,內嵌某個給定檔案名稱,並使用web瀏覽器打開。
若 help 為None,
config.help
配置項會被用作預設值。 若 help 為None,且配置了config.help_screen
,則在新的上下文中顯示配置的幫助界面。 其他情況下,不做任何處理。
- HideInterface() link
隱藏用戶介面(UI),直到出現用戶點擊事件。也可以在遊戲中按鍵盤H鍵隱藏UI。
- If(expression, true=None, false=None) link
根據 expression 的結果選擇使用 true 或 false 的行為。這個函數用在基於某個表達式的結果選擇執行行為。注意入參的預設值None,也可以用作一個行為,禁用某個按鈕。
- InvertSelected(action) link
該行為將提供行為的選項狀態反轉,可以應用在別的方法上。
- MouseMove(x, y, duration=0) link
將滑鼠指針移動到坐標 x, y 。如果設備沒有滑鼠指針,或者_preferences.mouse_move的值是False,那什麼都不會發生。
- duration
移動滑鼠指針行為消耗的時間,單位為秒。這個時間段內,滑鼠可能不會響應用戶操作。
- Notify(message) link
使用
renpy.notify()
函數顯示 message 內容。
- OpenDirectory(directory) link
在文件資源管理器中打開指定目錄 directory。目錄 directory 為以
config.basedir
為根目錄的相對目錄。
- OpenURL(url) link
在web瀏覽器中打開 url 。
- QueueEvent(event, up=False) link
使用
renpy.queue_event()
將給定的事件消息加入到事件隊列中。
- RestartStatement() link
這個行為會使Ren’Py回滾到當前語句之前,並再次執行當前語句。可以用在某些持久化變數改變後影響語句顯示效果的情況。
在菜單上下文運行的話,等到用戶退出並回到上一層上下文時才會執行回滾行為。
- RollForward(*args, **kwargs) link
這個行為觸發前滾,前提是前滾可行。否則,該行為是禁用狀態。
- Rollback(*args, **kwargs) link
這個行為觸發回滾,前提是回滾可行。否則,不會發生任何事。
入參將傳給 :func:renpy.rollback() 函數,除非參數 force 是預設值“menu”。
- RollbackToIdentifier(identifier) link
這個行為觸發回滾至某個標識符(identifier)。回滾標識符會作為HistoryEntry對象的一部分返回。
- Screenshot(*args, **kwargs) link
螢幕截圖。
- Scroll(id, direction, amount='step', delay=0.0) link
- id
當前界面中條(bar)、視口(viewport)或vpgrid的id。
- direction
如果是vbar,“increase”或“decrease”二選一;如果是視口或vpgrid,“horizontal increase”、“vertical increase”、“horizontal decrease”或“vertical decrease”,四選一。
- amount
滾動數量。可以使用像質數,也可以寫“step”或“page”。
- delay
若非零,表示動畫延遲時間值。
- SelectedIf(action, /) link
這個行為允許“根據一個行為列表”判斷一個按鈕是否被標記為選中狀態。其應被用作包含一個或多個行為的列表的一部分。例如:
# 如果mars_flag為True時,按鈕會被選中 textbutton "Marsopolis": action [ SelectedIf(SetVariable("mars_flag", True)), SetVariable("on_mars", True) ]
點擊按鈕後,在SeletedIf內部的行為會被正常執行。
- SensitiveIf(action, /) link
這個行為允許“根據一個行為列表”判斷一個按鈕是否被標記為可用狀態。其應被用作包含一個或多個行為的列表的一部分。例如:
# 如果mars_flag為True時,按鈕是可用的 textbutton "Marsopolis": action [ SensitiveIf(SetVariable("mars_flag", True)), SetVariable("on_mars", True) ]
點擊按鈕後,在SensitiveIf內部的行為會被正常執行。
- Skip(fast=False, confirm=False) link
使遊戲開始使用跳過(skipping)。如果遊戲處於菜單上下文下,這個行為導致回到遊戲界面。否則,這個行為啟用跳過(skipping)。
- fast
若該值為True,直接跳到下一個菜單選項。
- confirm
若該值為True,在使用跳過(skipping)前需要用戶確認。
- With(transition) link
使 transition 生效。
還有一些行為記錄在文件的其他頁面,比如 Language
、Replay
、EndReplay
、
gui.SetPreference
、gui.TogglePreference
、
StylePreference
和 voice actions。
可以通過 Action
類創建新的行為。
條(bar)值 link
條值與條(bar)一同使用,設置條(bar)的值,且允許條(bar)調整某個潛在特性。可以通過創建 BarValue
類的子類創建一個新的條值。
所有的BarValue類都有關鍵字 step ,也可以接受關鍵字 force_step ,具體情況詳見 ui.adjustment()
。
- AnimatedValue(value=0.0, range=1.0, delay=1.0, old_value=None) link
將某個值序列化,使用 delay 秒的時間將 old_value 的值轉為 value 的值。
- value
value值自身,是一個數值。
- range
value值的範圍,是一個數值。
- delay
序列化value值的時間,單位為秒。預設值是1.0。
- old_value
舊的value值。若為None,我們使用AnimatedValue想要替換的value值。否則,其會初始化為 value 的值。
- AudioPositionValue(channel='music', update_interval=0.1) link
顯示在 channel 通道播放音訊檔案播放位置的值。
- update_interval
值的更新頻率,單位為秒。
- DictValue(dict, key, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link
允許用戶使用字典型數據的鍵調整對應的值。
- dict
字典,或列表。
- key
字典的鍵,或者列表的索引(index)。
- range
調整的數值範圍。
- max_is_zero
若為True,當鍵對應的值為0時,條(bar)值範圍會調整為從1到0,所有其他值都會被降低到1。同樣的,當條(bar)被設置成最大值時,鍵的值將設置為0。
該參數只在內部使用。
- style
創建的條(bar)的樣式。
- offset
添加到條值的一個偏移量。
- step
調整條(bar)值的步進大小。若為空,預設為條(bar)的十分之一。
- action
若非None,當欄位改變時,將調用指定行為(action)。
- FieldValue(object, field, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link
允許用戶調整某個對象上欄位(field)的條(bar)值。
- object
調整的對象。
- field
欄位(filed)名稱的字串。
- range
可調整的範圍。
- max_is_zero
若為True,當鍵對應的值為0時,條(bar)值範圍會調整為從1到0,所有其他值都會被降低到1。同樣的,當條(bar)被設置成最大值時,欄位(filed)的值將設置為0。
該參數只在內部使用。
- style
創建的條(bar)的樣式。
- offset
添加到條值的一個偏移量。
- step
調整條(bar)值的步進大小。若為空,預設為條(bar)的十分之一。
- action
若非None,當欄位改變時,將調用指定行為(action)。
- LocalVariableValue(variable, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link
通過
use
引用的界面內,使用條(bar)值調整某個變數。如果要調整某個最上層界面的變數,推薦使用
ScreenVariableValue()
。更多資訊參見 use 。
該行為僅能創建在變數所屬的上下文中,且不能賦值到其他地方。
- variable
一個字串,表示待調整變數名。
- range
可調整的範圍。
- max_is_zero
若為True,當鍵對應的值為0時,條(bar)值範圍會調整為從1到0,所有其他值都會被降低到1。同樣的,當條(bar)被設置成最大值時,欄位(filed)的值將設置為0。
該參數只在內部使用。
- style
創建的條(bar)的樣式。
- offset
添加到條值的一個偏移量。
- step
調整條(bar)值的步進大小。若為空,預設為條(bar)的十分之一。
- action
若非None,當欄位改變時,將調用指定行為(action)。
- ScreenVariableValue(variable, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link
用於調整界面變數值的條(bar)值。
該行為針對的變數範圍包括使用
use
引用其他界面的界面自身和引用的子界面。 如果僅僅要修改被use
引用的子界面中的變數,推薦使用LocalVariableValue()
。- variable
一個字串,給出了待調整的變數名。
- range
可調整的範圍。
- max_is_zero
若為True,當鍵對應的值為0時,條(bar)值範圍會調整為從1到0,所有其他值都會被降低到1。同樣的,當條(bar)被設置成最大值時,variable的值將設置為0。
這偏向於某些內部使用。
- style
創建的條(bar)的樣式。
- offset
添加到條值的一個偏移量。
- step
調整條(bar)值的步進大小。若為空,預設為條(bar)的十分之一。
- action
若非None,當欄位改變時,將調用指定行為(action)。
- StaticValue(value=0.0, range=1.0) link
這個行為允許某個值被指定為靜態。
- value
值自身,一個數值。
- range
數值範圍。
- VariableValue(variable, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link
允許用戶調整默認儲存區變數值的條(bar)值。
- variable
一個字串,給出了待調整的變數名。
- range
可調整的範圍。
- max_is_zero
若為True,當鍵對應的值為0時,條(bar)值範圍會調整為從1到0,所有其他值都會被降低到1。同樣的,當條(bar)被設置成最大值時,variable的值將設置為0。
這偏向於某些內部使用。
- style
創建的條(bar)的樣式。
- offset
添加到條值的一個偏移量。
- step
調整條(bar)值的步進大小。若為空,預設為條(bar)的十分之一。
- action
若非None,當欄位改變時,將調用指定行為(action)。
- XScrollValue(viewport) link
根據給定的id,在當前界面水平滾動視口(viewport)的可調整值。視口(viewport)必須在條(bar)值出現前定義。
- YScrollValue(viewport) link
根據給定的id,在當前界面垂直滾動視口(viewport)的可調整值。視口(viewport)必須在條(bar)值出現前定義。
輸入(input)值 link
輸入(input)值與文本輸入一起使用,用於設置默認文本、接受改變文本、響應確認鍵、決定文本是否可編輯。要創建新的輸入(input)值,可以使用 InputValue
類的子類。
Ren’Py定義的輸入(input)值繼承自InputValue類,這意味著所有輸入值均含有Enable()、Disable()和Toggle()方法,分別執行啟用(enable)、禁用(disable)和切換編輯(toggle edit)行為。可以參考 DisableAllInputValues()
行為。
- DictInputValue(dict, key, default=True, returnable=False) link
根據輸入值更新
dict[key]
。- dict
一個字典或列表對象。
- default
若為True,輸入預設是可以被編輯的。
- returnable
若為True,當用戶按下確認鍵,輸入的值就會被返回。
- FieldInputValue(object, field, default=True, returnable=False) link
根據輸入值更新某個對象的欄位(field)。
- field
欄位(filed)名稱的字串。
- default
若為True,輸入預設是可以被編輯的。
- returnable
若為True,當用戶按下確認鍵,輸入的值就會被返回。
- FilePageNameInputValue(pattern='Page {}', auto='Automatic saves', quick='Quick saves', page=None, default=False) link
根據輸入值更新文件頁面(page)名。
- pattern
用於頁面(page)的默認名。使用Python風格的替換,例如花括號{}裡的內容可以替換為頁面(page)的編號。
- auto
自動保存頁面(page)的名稱。
- quick
快速保存頁面(page)的名稱。
- page
若該參數存在,給出了要顯示的頁面(page)編號。通常該值設定為None,表示當前頁面。
- default
若為True,輸入預設是可以被編輯的。
- LocalVariableInputValue(variable, default=True, returnable=False) link
根據輸入值更新某個被
use
引用的界面的變數。如果目標變數在某個頂層界面中,推薦使用
ScreenVariableInputValue()
。更多資訊參見 use 。
該行為僅能創建在變數所屬的上下文中,且不能賦值到其他地方。
- variable
待更新變數名,一個字串。
- default
若為True,輸入預設是可以被編輯的。
- returnable
若為True,當用戶按下確認鍵,輸入的值就會被返回。
- ScreenVariableInputValue(variable, default=True, returnable=False) link
根據輸入值更新某個界面的變數。
該行為針對的變數範圍包括使用
use
引用其他界面的界面自身和引用的子界面。 如果僅僅要修改被use
引用的子界面中的變數,推薦使用LocalVariableInputValue()
。- variable
待更新變數名,一個字串。
- default
若為True,輸入預設是可以被編輯的。
- returnable
若為True,當用戶按下確認鍵,輸入的值就會被返回。
- VariableInputValue(variable, default=True, returnable=False) link
根據輸入值更新變數。
- variable
待更新變數名,一個字串。
變數名除了可以是類似“strength”的字串之外,也可以是使用帶英文標點“.”的欄位名,比如“hero.strength”或“persistent.show_cutscenes”。
- default
若為True,輸入預設是可以被編輯的。
- returnable
若為True,當用戶按下確認鍵,輸入的值就會被返回。
函數和類 link
這些函數和類在界面方面很有用。
環境設定(preference) link
所有環境設定都可以基於上面給出的行為Action和值Value來定義。這需要一些Ren’Py方面的知識,才能選擇正確的環境設定並運用。環境設定構造器(constructor)讓這件事變得簡單,通過創建一個行為或值,就能基於名稱應用在預設的環境設定界面上。
- Preference(name, value=None, range=None) link
其從某項環境設定構造了合適的行為或者值。環境設定名稱應該是在變准菜單中出現的名稱,值應該是選項名、“toggle”輪詢選項、一個指定的值,或者按鈕的名稱。
可以與按鈕和熱區一起使用的行為如下:
Preference(“display”, “fullscreen”) - 全螢幕模式顯示。
Preference(“display”, “window”) - 窗口模式顯示,1倍大小。
Preference(“display”, 2.0) - 窗口模式顯示,2倍大小。
Preference(“display”, “any window”) - 用前一種窗口尺寸顯示。
Preference(“display”, “toggle”) - 切換顯示模式。
Preference(“transitions”, “all”) - 顯示所有轉場(transition)效果。
Preference(“transitions”, “none”) - 不顯示轉場(transition)效果。
Preference(“transitions”, “toggle”) - 切換轉場(transition)效果。
Preference(“video sprites”, “show”) - 顯示所有影片精靈(sprite)。
Preference(“video sprites”, “hide”) - 可能的話,將影片精靈(sprite)降格為圖片顯示。
Preference(“video sprites”, “toggle”) - 切換圖像降格行為。
Preference(“show empty window”, “show”) - 允許“window show”和“window auto”語句在say語句之外顯示一個空窗口。
Preference(“show empty window”, “hide”) - 不允許“window show”和“window auto”語句在say語句之外顯示一個空窗口。
Preference(“show empty window”, “toggle”) - 切換上面兩種情況。
Preference(“text speed”, 0) - 文本立刻顯示。
Preference(“text speed”, 142) - 設置文本顯示速度為每秒142字元。
Preference(“joystick”) - 顯示joystick環境設定。
Preference(“skip”, “seen”) - 只跳過看過的資訊。
Preference(“skip”, “all”) - 跳過所有資訊,無論是否看過。
Preference(“skip”, “toggle”) - 切換上面兩種情況。
Preference(“begin skipping”) - 開始跳過(skipping)。
Preference(“after choices”, “skip”) - 在選項後跳過。
Preference(“after choices”, “stop”) - 在選項後停止跳過。
Preference(“after choices”, “toggle”) - 切換上面兩種情況。
Preference(“auto-forward time”, 0) - 將自動前進的時間設定為無限。
Preference(“auto-forward time”, 10) - 設置自動前進時間(單位為每秒250個字元)。
Preference(“auto-forward”, “enable”) - 啟用自動前進模式。
Preference(“auto-forward”, “disable”) - 禁用自動前進模式。
Preference(“auto-forward”, “toggle”) - 切換自動前進模式。
Preference(“auto-forward after click”, “enable”) - 在一次點擊後維持自動前進模式。
Preference(“auto-forward after click”, “disable”) - 在一次點擊後禁用自動前進模式。
Preference(“auto-forward after click”, “toggle”) - 切換上面兩種情況。
Preference(“automatic move”, “enable”) - 啟用自動滑鼠模式。
Preference(“automatic move”, “disable”) - 禁用自動滑鼠模式。
Preference(“automatic move”, “toggle”) - 切換自動滑鼠模式。
Preference(“wait for voice”, “enable”) - 自動前進時,等待當前語音播放完畢。
Preference(“wait for voice”, “disable”) - 自動前進時,不等待當前語音播放完畢。
Preference(“wait for voice”, “toggle”) - 切換語音等待模式。
Preference(“voice sustain”, “enable”) - 當前互動行為中維持語音。
Preference(“voice sustain”, “disable”) - 當前互動行為中不維持語音。
Preference(“voice sustain”, “toggle”) - 切換語音維持模式。
Preference(“music mute”, “enable”) - 音樂混合器靜音。
Preference(“music mute”, “disable”) - 取消音樂混合器靜音。
Preference(“music mute”, “toggle”) - 切換音樂靜音狀態。
Preference(“sound mute”, “enable”) - 音效混合器靜音。
Preference(“sound mute”, “disable”) - 取消音效混合器靜音。
Preference(“sound mute”, “toggle”) - 切換音效靜音狀態。
Preference(“voice mute”, “enable”) - 語音混合器靜音。
Preference(“voice mute”, “disable”) - 取消語音混合器靜音。
Preference(“voice mute”, “toggle”) - 切換語音靜音狀態。
Preference(“mixer <mixer> mute”, “enable”) - 將指定的混合器靜音。
Preference(“mixer <mixer> mute”, “disable”) - 取消指定的混合器靜音。
Preference(“mixer <mixer> mute”, “toggle”) - 切換指定的混合器靜音狀態。
Preference(“all mute”, “enable”) - 所有混合器靜音。
Preference(“all mute”, “disable”) - 取消所有混合器靜音。
Preference(“all mute”, “toggle”) - 切換所有混合器靜音狀態。
Preference(“main volume”, 0.5) - 設置對所有音訊通道的調整值。
Preference(“music volume”, 0.5) - 設置音樂音量。
Preference(“sound volume”, 0.5) - 設置音效音量。
Preference(“voice volume”, 0.5) - 設置語音音量。
Preference(“mixer <mixer> volume”, 0.5) - 設置指定混合器音量。
Preference(“emphasize audio”, “enable”) - 加強在config.emphasize_audio_channels中定義的音訊通道。
Preference(“emphasize audio”, “disable”) - 取消加強在config.emphasize_audio_channels中定義的音訊通道。
Preference(“emphasize audio”, “toggle”) - 切換音訊加強狀態。
Preference(“self voicing”, “enable”) - 啟用自動語音。
Preference(“self voicing”, “disable”) - 禁用自動語音。
Preference(“self voicing”, “toggle”) - 切換自動語音模式。
Preference(“clipboard voicing”, “enable”) - 啟用剪貼板語音。
Preference(“clipboard voicing”, “disable”) - 禁用剪貼板語音。
Preference(“clipboard voicing”, “toggle”) - 切換剪貼板語音狀態。
Preference(“debug voicing”, “enable”) - 啟用自動語音debug。
Preference(“debug voicing”, “disable”) - 禁用自動語音debug。
Preference(“debug voicing”, “toggle”) - 切換自動語音debug狀態。
Preference(“rollback side”, “left”) - 觸摸螢幕左側觸發回滾。
Preference(“rollback side”, “right”) - 觸摸螢幕右側觸發回滾。
Preference(“rollback side”, “disable”) - 觸摸螢幕不觸發回滾。
Preference(“gl powersave”, True) - 使用省電模式降低幀率。
Preference(“gl powersave”, False) - 不使用省電模式降低幀率。
Preference(“gl powersave”, “auto”) - 使用電池情況下自動啟用省電模式。
Preference(“gl framerate”, None) - 運行時顯示幀率。
Preference(“gl framerate”, 60) - 在給定的幀率下運行。
Preference(“gl tearing”, True) - (設備性能不足時)拖慢而不是跳幀。
Preference(“gl tearing”, False) - (設備性能不足時)跳幀而不是拖慢。
Preference(“font transform”, “opendyslexic”) - 將字體轉為opendyslexic(譯者註:為閱讀障礙人群設計的字體)的配置項。
Preference(“font transform”, “dejavusans”) - 將字體轉為deja vu sans的配置項。
Preference(“font transform”, None) - 禁用字體轉換。
Preference(“font size”, 1.0) - 字號縮放因子配置項。
Preference(“font line spacing”, 1.0) - 字體行距縮放因子配置項。
Preference(“system cursor”, “enable”) - 使用系統貫標,忽略 config.mouse。
Preference(“system cursor”, “disable”) - 使用config.mouse的游標。
Preference(“system cursor”, “toggle”) - 切換系統游標。
Preference(“high contrast text”, “enable”) - 啟用黑背景白文字。
Preference(“high contrast text”, “disable”) - 禁用高對比文本。
Preference(“high contrast text”, “toggle”) - 切換高對比文本。
Preference(“audio when minimized”, “enable”) - 窗口最小化後保持聲音播放。
Preference(“audio when minimized”, “disable”) - 窗口最小化後停止聲音播放。
Preference(“audio when minimized”, “toggle”) - 切換窗口最小化後的聲音播放設置。
Preference(“audio when unfocused”, “enable”) - 窗口失去焦點後保持聲音播放。
Preference(“audio when unfocused”, “disable”) - 窗口失去焦點後停止聲音播放。
Preference(“audio when unfocused”, “toggle”) - 切換窗口失去焦點後的聲音播放設置。
Preference(“web cache preload”, “enable”) - 啟用web快取預載入。
Preference(“web cache preload”, “disable”) - 禁用web快取預載入,並刪除預載入的數據。
Preference(“web cache preload”, “toggle”) - 切換web快取預載入設置。
Preference(“voice after game menu”, “enable”) - 進入遊戲設置菜單界面時繼續播放聲音。
Preference(“voice after game menu”, “disable”) - 進入遊戲設置菜單界面時停止播放聲音。
Preference(“voice after game menu”, “toggle”) - 切換進入遊戲設置菜單界面時的播放聲音設定。
可以與條(bar)一起使用的值如下:
Preference(“text speed”)
Preference(“auto-forward time”)
Preference(“main volume”)
Preference(“music volume”)
Preference(“sound volume”)
Preference(“voice volume”)
Preference(“mixer <mixer> volume”)
Preference(“self voicing volume drop”)
Preference(“font size”)
Preference(“font line spacing”)
range 參數可以指定某個條(bar)的數值範圍。例如,“text speed”的預設值是200cps。“auto-forward time”的預設值是每段文本30秒。(這些是最大值,而不是預設值。)
可以被按鈕使用的行為包括: * Preference(“renderer menu”) - 顯示渲染器(renderer)菜單。 * Preference(“accessibility menu”) - 顯示數據(accessibility)讀寫菜單 * Preference(“reset”) - 將環境設定(preference)重設為預設值
上面的界面是內部定義的,無法訂製化。
- GetCharacterVolume(voice_tag) link
該函數根據關聯的語音標籤(tag),返回一個介於0.0到1.0之間的數值,表示對應 voice 聲道最大音量的一個比例。
遊戲手把 link
這些函數和行為跟遊戲手把一起工作。
- GamepadCalibrate() link
調用手把校正的行為。
- GamepadExists(developer=True) link
檢測手把是否存在的函數。存在返回True,不存在返回False。
- developer
強制該函數返回True,
config.developer
必須配置為True。
文件函數 link
這些函數返回關於文件的有用資訊。它們使用相同的默認頁面(page)相關的文件行為。
- FileCurrentPage() link
將當前文件頁面(page)以字串返回。
- FileCurrentScreenshot(empty=None, **properties) link
一個螢幕幕截圖的可顯示控制項。其將保存你在當前文件中,前提是進入了菜單或使用
FileTakeScreenshot()
採集了螢幕截圖。如果沒有當前螢幕截圖,對應的位置上顯示 empty 的圖像。(如果 empty 是空值None,預設為
Null()
。)
- FileJson(name, key=None, empty=None, missing=None, page=None, slot=False) link
根據 name 參數讀取對應的Json數據。
如果存檔槽位是空的,則返回 empty 。
如果存檔槽位不是空的,並且 key 為None,返回包含Json數據的整個目錄
如果 key 不為None,則返回json[key],前提是 key 在存檔json對象中有定義。如果存檔存在但不包含 key ,就返回 missing 。如果存檔槽位為空,則返回 empty 。
使用
config.save_json_callbacks()
註冊的回調函數可用於向存檔槽位中添加Json。默認情況下,Json中包含下列key:
- _save_name
存檔時
save_name
的值。- _renpy_version
創建存檔的Ren’Py版本號。
- _version
創建存檔時的
config.version
值。- _game_runtime
調用
renpy.get_game_runtime()
後得到的返回結果。- _ctime
存檔創建時間。UTC時間,即從1970年1月1日0點開始計算的秒數。
- FileLoadable(name, page=None, slot=False) link
該函數在存檔文件可載入的情況下返回True,否則返回False。
- FileNewest(name, page=None, slot=False) link
如果存檔文件是最後一次存檔返回True,否則返回False。
- FilePageName(auto='a', quick='q') link
以字串形式返回當前存檔文件頁面(page)名稱。如果是一個普通頁面(page),該函數返回頁面編號。否則,返回 auto 或 quick 。
- FileSaveName(name, empty='', page=None, slot=False) link
返回存檔文件保存時的save_name,如果文件不存在則返回 empty 。
- FileScreenshot(name, empty=None, page=None, slot=False) link
返回指定文件相關的螢幕截圖。如果文件不能載入,返回 empty ,前提 empty 的值不是None。在文件不能載入且 empty 為空的情況下,可視組件Null會被創建。
返回值是一個可視組件。
- FileSlotName(slot, slots_per_page, auto='a', quick='q', format='%s%d') link
返回指定編號的存檔槽位名。前提是普通頁面(page)下的槽位都按順序從1開始編號,並且頁面也從1開始編號。當槽位編號為2,每個頁面槽位數(slots_per_page)為10,其他變數都是預設值的情況下:
顯示第一頁面時,返回“2”。
顯示第二頁面時,返回“12”。
顯示自動頁面時,返回“a2”。
顯示快速存檔頁面時,返回“q2”。
- slot
指定的槽位編號。
- slots_per_page
每頁槽位數量。
- auto
自動存檔頁面的前綴。
- quick
快速存檔頁面的前綴。
- format
格式程式碼。包含兩部分:一個頁面前綴字串,一個槽位編號整數。
- FileTime(name, format='%b %d, %H:%M', empty='', page=None) link
按指定格式,返回存檔時間。如果沒有匹配的存檔文件就返回 empty 。
返回值是一個字串。
- FileUsedSlots(page=None, highest_first=True) link
返回頁面上所有可用的經過編號的文件列表。
- page
待掃描的頁面名。若為None,就使用當前頁面。
- highest_first
若為True,列表內文件按編號從大到小排序。否則,列表內文件按編號從小到大排序。
頭像函數 link
該函數返回使用的頭像。
- SideImage() link
返回與當前發言角色相關的頭像。如果頭像不存在則返回一個空的可視組件。
其他函數 link
- CurrentScreenName() link
返回當前界面名稱。如果沒有當前顯示界面則返回None。 如果某個界面使用 use 引用了其他界面,則返回此界面,而不是被引用的界面。
Tooltips link
所有可視組件上可用的 tooltip
特性和GetTooltip函數都可以讀寫tooltip。當可視組件獲得焦點時,GetTooltip函數會返回這個組件的tooltip特性的值。
提醒一下,傳入 tooltip
特性的值需要支持是否相等的判斷。
這裡是一個樣例:
screen tooltip_example():
vbox:
textbutton "北":
action Return("n")
tooltip "去約見北極熊。"
textbutton "南":
action Return("s")
tooltip "前往熱帶。"
textbutton "東":
action Return("e")
tooltip "我們可以擁抱黎明。"
textbutton "西":
action Return("w")
tooltip "去欣賞最美的日落。"
$ tooltip = GetTooltip()
if tooltip:
text "[tooltip]"
可視組件 nearrect 可用於顯示“跳出視窗型”tooltip,並且可以獲取一個特殊的“tooltip”焦點名, 會將最後獲取焦點的位置設定為tooltip對象:
screen tooltip_example2():
frame:
padding (20, 20)
align (.5, .3)
has vbox
textbutton "北":
action Return("n")
tooltip "去約見北極熊。"
textbutton "南":
action Return("s")
tooltip "前往熱帶。"
textbutton "東":
action Return("e")
tooltip "我們可以擁抱黎明。"
textbutton "西":
action Return("w")
tooltip "去欣賞最美的日落。"
# 這是界面上最後顯示的內容。
$ tooltip = GetTooltip()
if tooltip:
nearrect:
focus "tooltip"
prefer_top True
frame:
xalign 0.5
text tooltip
- GetTooltip(screen=None, last=False) link
返回當前獲得焦點的可視組件的tooltip,如果可視組件未獲得焦點則返回None。
- screen
如果非空,這個參數應該是某個界面的名稱或者標籤(tag)。如果獲得焦點的可視組件是界面的一部分,則該函數隻返回tooltip。
- last
若為True,返回此函數上次調用的非None返回結果。
傳統方法 link
Warning
這種傳統方法已被廢棄,並使用上面說的方法替代。不過你可能會在一些老版本的項目中見到它。
當按鈕處於指針懸停狀態時,tooltip類會改變界面。
- class Tooltip(default) link
當滑鼠指針懸停在某個區域上時,一個tooltip對象可以用於提示對應界面的功能。
tooltip對象有一個
value
欄位,當tooltip對象被創建時會通過構造器傳入 default 作為預設值。當透過tooltip創建的某個按鈕行為被使用時,value欄位就會根據關聯的行為改變對應值。- Action(value) link
將按鈕的hovered特性對應的行為返回。當按鈕處於指針懸停狀態時,tooltip的value欄位會被設置為 value 。當按鈕失去焦點時,tooltip的value欄位會恢復為預設值。
在某個界面使用tooltip時,常用做法是在default語句中創建tooltip對象。tooltip的值和行為的方法可以在界面中使用。使用時可以按任何順序——在行為執行前就可以使用tooltip的值。
tooltip可以使用任何類型的值。在下面的樣例中,我們使用text語句在界面中顯示字串,使用add語句添加可視組件也是可行的。還可以設計更多複雜的行為。
screen tooltip_test:
default tt = Tooltip("沒有選擇任何按鈕。")
frame:
xfill True
has vbox
textbutton "One.":
action Return(1)
hovered tt.Action("The loneliest number.")
textbutton "Two.":
action Return(2)
hovered tt.Action("Is what it takes.")
textbutton "Three.":
action Return(3)
hovered tt.Action("A crowd.")
text tt.value