截圖 link
Ren’Py內建了遊戲截圖功能,並可以使用截圖用作可視組件。 將截圖用作可視組件後,可以在“紙娃娃”系統中將截圖保存,以備後續使用,例如創建虛擬形象。
Ren’Py使用截圖功能後,無論是整個界面還是單個可視組件的截圖,都會根據窗口縮放和DPI改變調整繪製尺寸。 核心在於實際觀感,而不是截圖資源的原生尺寸。
預設的截圖快捷鍵是鍵盤的“S”。
下列是截圖相關的行為和界面函數。
相關函數 link
下列函數也可以用於截圖:
- renpy.render_to_file(d, filename, width=None, height=None, st=0.0, at=None, resize=False) link
渲染某個可視組件或Render對象,然後將渲染結果保存為一個文件。此次渲染會使用Ren’Py的顯示系統,因此窗口縮放會影響渲染結果。
- d
需要渲染的可視組件或Render對象。若該項是一個Render對象,忽略 width、height、st 和 at 參數。
- filename
一個字串,指定需要保存的檔案名。文件路徑預設為遊戲基目錄。副檔名比為是 .png。
- width
d 的寬度,虛擬像素值。若為None,使用
config.screen_width
的值。- height
d 的高度,虛擬像素值。若為None,使用
config.screen_height
的值。- st
顯示時間軸的渲染時間點。
- at
動畫時間軸的渲染時間點。若為None,則使用 st 的值。
- resize
若為True,圖像尺寸會調整,與可視組件或Render對象的虛擬像素值保持一致。 但這樣做可能會降低截圖結果的圖像質量。
該函數只能在Ren’Py的顯示系統啟動後才能調用,不能在初始化階段或首次交互行為之前調用。
Ren’Py在遊戲運行時不會重新掃描圖片資源文件,因此不能直接將截圖文件作為遊戲運行時的必備資源。
- render_to_surface(d, width=None, height=None, st=0.0, at=None, resize=False) link
該函數渲染某個可視組件或Render對象,返回一個pygame_sdl2表面紋理(surface)。 此次渲染會使用Ren’Py的顯示系統,因此窗口縮放會影響渲染結果。
- d
需要渲染的可視組件或Render對象。若該項是一個Render對象,忽略 width、height、st 和 at 參數。
- filename
一個字串,指定需要保存的檔案名。文件路徑預設為遊戲基目錄。副檔名比為是 .png。
- width
d 的寬度,虛擬像素值。若為None,使用
config.screen_width
的值。- height
d 的高度,虛擬像素值。若為None,使用
config.screen_height
的值。- st
顯示時間軸的渲染時間點。
- at
動畫時間軸的渲染時間點。若為None,則使用 st 的值。
- resize
若為True,圖像尺寸會調整,與可視組件或Render對象的虛擬像素值保持一致。 但這樣做可能會降低截圖結果的圖像質量。
該函數只能在Ren’Py的顯示系統啟動後才能調用,不能在初始化階段或首次交互行為之前調用。
- renpy.screenshot(filename) link
將截圖保存為 filename。
如果截圖保存成功就返回True。如果由於某些原因保存失敗就返回False。
config.screenshot_pattern
和_screenshot_pattern
兩項可以控制截圖檔案名。
- renpy.screenshot_to_bytes(size) link
將截圖以bytes對象形式返回,可以作為參數傳入
im.Data()
。該二進制對象將是png格式,例如:$ data = renpy.screenshot_to_bytes((640, 360)) show expression im.Data(data, "screenshot.png"): align (0, 0)
將顯示一個截圖。bytes對象可以儲存到存檔文件和持久化數據中。不過這個對象可能很大,注意不要儲存太多類似的對象。
- size
截圖後重新縮放的目標尺寸。若為None,截圖將按用戶窗口的尺寸進行調整,不包含窗口的標題欄。
該函數運行可能比較慢,通常用在類似存檔的截圖需求中,而不應該用在需要即時生效的功能中。