Advanced GUI link

この章では guit の高度な使用についての雑多な事柄を扱います。

Python 関数 link

GUI をサポートするPython関数がいくつかあります。

guit.rebuild link

gui.rebuild 関数は GUI を更新して Ren'Py の 現在の状態を反映するやや遅い関数です。これは以下のことをします。 :

  • gui 名前空間で変数を定義するすべての define ステートメントを再実行します。

  • 現在の言語ですべての translate python ブロックをを再実行します。

  • すべての style ステートメントを再実行します。

  • システムのすべてのスタイルを再構築します。

init python ブロックは gui.rebuild で再実行されないことに注意してください。このため

define gui.text_size = persistent.text_size

init python:
    gui.text_size = persistent.text_size

は異なります。

default ステートメント, gui 名前空間, gui.rebuild link

The default statement has changed semantics when applied to the gui namespace. When applied to a variable in the gui namespace, the default statement runs interleaved with the define statement, and the default statements are not re-run when gui.rebuild is called.

つまり、以下のコードがあるとすると

default gui.accent_color = "#c04040"
define gui.hover_color = gui.accent_color

ゲームの最初の起動時、accent color が設定され、hover color は accent color に設定されます(共に様々なスタイルの色に使用されます)。

しかし、ゲームスクリプトとして以下のソースがあると

$ gui.accent_color = "#4040c0"
$ gui.rebuild()

Ren'Py は define のみを再実行し、 hover color を accent color に設定し、スタイルを更新します。これにより、ゲーム中に gui の一部を変更可能になります。

GUI Preferences link

Ren'Py は1つの関数とペアのアクションで成る GUI Preference システムもサポートしています。

link

GUI preference システムは変数定義時に、Preference の名前とデフォルト値とともに gui.preference を呼び出して使用します。例えば、 gui preferences を使用してテキストのフォントとサイズを定義できます。

define gui.text_font = gui.preference("font", "DejaVuSans.ttf")
define gui.text_size = gui.preference("size", 22)

こうすると、 gui.SetPreference と gui.TogglePreference アクションを使用使用して、 preferences の値を変更が可能になります。こちらは Preferences スクリーンに追加できるいくつかの例になります。

vbox:
    style_prefix "check"
    label _("Options")
    textbutton _("OpenDyslexic") action gui.TogglePreference("font", "OpenDyslexic-Regular.otf", "DejaVuSans.ttf")

vbox:
    style_prefix "radio"
    label _("Text Size")
    textbutton _("Small") action gui.SetPreference("size", 20)
    textbutton _("Medium") action gui.SetPreference("size", 22)
    textbutton _("Big") action gui.SetPreference("size", 24)