高度な GUI link

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

Python 関数 link

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

gui.button_properties(kind) link

ボタンの kind を指定すると、そのボタンの標準のスタイルプロパティーの辞書を返します。これは以下の組み合わせです。 :

background

下記に記述します。

padding

(あれば) gui.kind_borders.padding へのものです。

xsize

(あれば) gui.kind_widthへのものです。

ysize

(あれば) gui.kind_height へのものです。

(kind が文字列 "nvl_button"ならば、これは gui.nvl_button_background 変数の方を探すことに注意してください)

background は以下のうち最初にあったものをその背景画像とするフレームです。

  • gui/button/kind_[prefix_].background.png

  • gui/button/[prefix_].background.png

gui 変数 gui.kind_borders があればそれが使用され、そうでなければ gui.button_borders が使用されます。 gui.kind_tile があれば、それが Borders がタイリングされるかを決定し、そうでなければ gui.button_tile がタイリングを制御します。

[prefix_] の意味は スタイル接頭辞検索 を参照してください。

gui.init(width, height, fov=75) link

GUI を初期化します。

width

デフォルトウィンドウの幅です。

height

デフォルトウィンドウの高さです。

fov

3d ステージの視野です。

gui.rebuild() link

GUIを再構築します。

これはかなり遅い関数であることに注意してください。

gui.text_properties(kind=None, accent=False) link

ボタンの kind を指定すると、そのボタンの標準のスタイルプロパティーの辞書を返します。これは以下の組み合わせです。またテキストボタンの kind を指定すると、ボタン内のテキストの標準のスタイルプロパティーの辞書を返します。これは以下の組み合わせです。 :

font

あれば gui.kind_text_font へのものです。

size

(あれば) gui.kind_text_size へのものです。

xalign

(あれば) gui.kind_text_xalign へのものです。

textalign

(あれば) gui.kind_text_xalign へのものです。

layout

gui.kind_text_xalign が 0 以上 1 以下なら、 "subtitle" へのものです。

テキストの color スタイルプロパティーを設定する変数も複数あります。

color

あれば gui.kind_text_colorへのものです。変数が設定されておらず、 accent が True ならば、テキストの色をデフォルトのアクセントカラーに設定します。

insensitive_color

(あれば) gui.kind_text_insensitive_color へのものです。

idle_color

(あれば) gui.kind_text_idle_color へのものです。

hover_color

(あれば) gui.kind_text_hover_color へのものです。

selected_color

(あれば) gui.kind_text_selected_color へのものです。

他のすべての テキストスタイルプロパティー も利用可能です。 kind が None でないときは、 位置スタイルプロパティー も利用可能です。例えば gui.kind_text_outlines は outline スタイルプロパティーを設定し、 gui.kind_text_kerning はカーニングを設定します。

gui.variant(f, variant=None) link

デコレーターは gui が最初の初期化時および再構築時のたびに関数が呼び出されるようにします。これは次の形式で関数のデコレーターとしての使用を意図しています。

@gui.variant
def small():
    gui.text_size = 30
    # ...

f (関数)とスクリーン variant を指定する variant (文字列)で呼び出しても使えます。

gui.button_text_properties(kind=None, accent=False):

gui.text_properties() の廃止されたエイリアスです。

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

default ステートメントは gui 名前空間に適用されると意味が変わります。 gui 名前空間の変数に適用されると、 default ステートメントの実行に define ステートメントが挟まれ、default ステートメントは gui.rebulid() が呼び出されても再実行されません。

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

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 システムもサポートしています。

gui.SetPreference(name, value, rebuild=True) link

このアクションは name の gui preference を value に設定します。

rebuild

デフォルトでは True で、 gui.rebuild() を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。

これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。

gui.TogglePreference(name, a, b, rebuild=True) link

このアクションは name の gui preference を ab の値でトグルします。値が a と等しければ、選択状態になります。

rebuild

デフォルトでは True で、 gui.rebuild() を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。

これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。

gui.preference(name, default=...) link

この関数は name の gui preference の値を返します。

default

指定されると、この値はその gui preference のデフォルトの値になります。デフォルト値はその 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.SetPreferencegui.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)