スタイル link

スタイルによって displayable の見た目をカスタマイズできます。これは、displayable の style プロパティーの値を変更することによって実現できます。例えば、 background プロパティーを変更すると、ウィンドウやボタンの背景をカスタマイズできます。

スタイルプロパティーはいつそのプロパティーが使用されるかを記す接頭辞と、そのプロパティー自身の 2 つの要素で構成されます。例えば hover_background プロパティーはボタンにフォーカスがあると使用され、 idle_background プロパティーはボタンがフォーカスを失うと使用されます。 ( background プロパティーは idle_backgroundhover_background の両方を設定します。 )

Ren'Py には100 以上のスタイルプロパティーがありますが、この章では少数のプロパティーを使用するに留めます。 background に対するスタイルプロパティーとして color, font, outlines , size を使用します。スタイルプロパティーの完全なリストは style properties を参照してください。

スタイルとスタイルの継承 link

それぞれの displayable にはスタイルが組み込まれています。displayable が作成されると、直接に、またはスクリーンシステムを利用して style プロパティーが与えられ、そのスタイルが displayable の見た目の更新に使用されます。以下の例で:

image big hello world = Text("Hello, World", size=40)

テキスト displayable に size プロパティーが与えられており、テキストのサイズが変更されます。このカスタマイズでは、テキスト displayable の見た目として高さが40ピクセルのテキストを表示するようにしています。

スクリーン言語と同様に、各ユーザーインターフェース用のステートメントは適切なスタイルプロパティーを受け取ります。

screen big_hello_world:
    text "Hello, World" size 40

Ren'Py はスタイルの継承をサポートし、各スタイルは親を 1 つ持っています。スタイルでスタイルプロパティーが定義されていないと、そのプロパティーの値は直近の親から継承します。

各 displayable はその displayable のスタイルの親を指定する "style" というプロパティーを受け取ります。

image big hello world = Text("Hello World", style="big")

screen hello_world:
    text "Hello, World" style "big"

style プロパティーが指定されないと、提供された displayable の種類に基づいて親が選ばれます。選ばれた親はスクリーン言語のユーザーインターフェースステートメントにある ref:style_group <style-group> から影響を受けます。

スタイルが親を定義せずに定義されるとデフォルトの親がそのスタイルに選ばれます。そのスタイル名にアンダースコア (_) があるなら親は最初のアンダースコアまでを取り除いて名付けられます。例えば my_button というスタイルは button というスタイルを継承します。この継承は style ステートメントやスタイルオブジェクトのメソッド呼び出しで変更可能です。存在しないスタイルが使用され、またそのスタイル名にアンダースコアがあるなら Ren'Py はデフォルトの親を使用してそれを作成します。

アンダースコアで始まる名前のスタイルは Ren'Py 内部での使用のために予約されています。

Ren'Py は起動時にスタイルをビルドするので、名前を持つスタイルは init コードの外で変更するべきではありません。

スタイルインスペクター link

config.developer が true なら、ある displayable に使用されているスタイルを確認出来るスタイルインスペクターが使用可能です。

スタイルインスペクターを使用するにはマウスをある displayable 上に移動して shift+l を押すと、 Ren'Py がマウス位置を含む displayable のリストをスクリーンに描画された順に表示します。 ( つまり最後の displayable はそれ以外の上にあるということです。 )

スタイル名をクリックするとその displayable が継承するスタイルと、各 displayable が最終的な displayable に寄与するプロパティーが表示されます。

スタイルの定義: スタイルステートメント link

スタイル は style statement を使用して定義されます。

style my_text is text:
    size 40
    font "gentium.ttf"

あるスタイルが存在しなければ style ステートメントはそのスタイルを作成し、そうでなければ既存のスタイルは style ステートメントによって修正されます。

style ステートメントはキーワード style と定義するスタイル名で始まります。最初の行にはこれに 0 以上の節や、任意のコロンが続きます。

コロンが存在すると、次にブロックが続かなければなりません。ブロックの各行は 1 つ以上の節を含み、そうでなければステートメントが終了します。

style ステートメントは以下の節を受け取ります。

スタイルプロパティー 単純式

単純式の値を指定されたスタイルプロパティーに代入します。

is

このスタイルの親を設定します。親はスタイル名でなければなりません。

clear

この style ステートメントが実行されるより前に代入されたこのスタイルの全てのプロパティーを除去します。これはスタイルが親からプロパティーの値を継承することを防ぎません。

take スタイル名

この style ステートメントが実行されるより前に代入されたこのスタイルの全てのプロパティーを除去し、その名前のスタイルのプロパティーで置き換えます。これはスタイルの親を変更しません。

variant 単純式

単純式を評価し、 screen variants として解釈される文字列か文字列のリストを生成します。少なくとも 1 つ指定されたバージョンがアクティブなら style ステートメントが実行され、そうでなければ無視されます。

properties simple-expression

単純式を評価して辞書を得ます。辞書はスタイルとその値が期待され、値は style ステートメントに与えられたように代入されます。

スタイルステートメントの例は:

# Creates a new style, inheriting from default.
style big_red:
    size 40

# Updates the style.
style big_red color "#f00"

# Takes the properties of label_text from big_red, but only if we're
# on a touch system.

style label_text:
    variant "touch"
    take big_red

style ステートメントは常に初期化時に実行されます。 style ステートメントが init ブロックにない場合は自動的に init 0 ブロックに配置されます。

スタイルの定義: Python link

名前付きスタイルは、グローバルな style オブジェクト上のフィールドに存在します。新しいスタイルを作成するには、Style クラスのインスタンスを作成し、 style オブジェクト上のフィールドに割り当てます。:

init python:
     style.big_red = Style(style.default)

スタイルプロパティーは、style のフィールドプロパティーへの割り当てによって設定できます。:

init python:
     style.big_red.color = "#f00"
     style.big_red.size = 42
class Style(parent) link

新しいスタイルオブジェクトを作成します。スタイルプロパティーはこのオブジェクトのフィールドに割り当てられます。

parent

親となるスタイル。これは他のスタイルオブジェクトまたは文字列にできます。

clear() link

これは、すべてのスタイルプロパティーをこのオブジェクトから削除します。値はオブジェクトの親から継承されます。

set_parent(parent) link

このスタイルオブジェクトの親を parent に設定します。

take(other) link

これはスタイルプロパティーを other から持ってきます。 other はスタイルオブジェクトにする必要があります。

インデックスされたスタイル

インデックスされたスタイルは、displayable に与えられたデータによって displayable の外観を変えるときに使えるシンプルなスタイルです。インデックススタイルは、文字列や整数によってスタイルオブジェクトにインデックスを作ることで作成できます。インデックススタイルが存在しないときは、インデックスを作成するとこれが作成されます。

init python:
    style.button['Foo'].background = "#f00"
    style.button['Bar'].background = "#00f"

インデックススタイルは、displayable にインデックスされたスタイルを与えることで使用できます。:

screen indexed_style_test:
    vbox:
        textbutton "Foo" style style.button["Foo"]
        textbutton "Bar" style style.button["Bar"]

スタイル設定 link

しばしばユーザーがユーザーインターフェースの一部をカスタマイズ出来るようにすることが望まれます。例えば製作者は彼のゲームのプレイヤーがその外見や色、テキストのサイズを調整出来るようにしたいと望むかもしれません。 Style preferences はこのようなカスタマイズを可能にします。

スタイル設定は一つ以上のスタイルプロパティーを制御する設定です。スタイル設定は名前と一つ以上の代替スタイルを持ちます。いつでも代替スタイルはスタイル設定に対応する代替物として選択されます。選択された代替スタイルは永続データに保存され、また初期値はスタイルプロパティーに登録された最初の代替スタイルとなります。

代替スタイルは一つ以上の関連づけられたスタイル、プロパティーとそれに関連づけられた値を持ち、また代替スタイルがスタイル設定に対応する選択された代替スタイルになると、そのスタイルのプロパティーは与えられた値を代入されることを表します。これは Ren'Py が最初に初期化される時と、新しい代替スタイルが選択される時はいつでも実行されます。

与えられたスタイル設定に対応するすべての代替スタイルが一連のスタイルとプロパティーを更新することを保証するべきです。さもなければいくつかのスタイルは値が代入されず、結果は未定義です。

スタイル設定の関数の一覧です。 :

StylePreference(preference, alternative) link

alternative を与えられたスタイル設定に対応する選択された代替スタイルにするアクションです。

preference

スタイル設定の名前の文字列。

alternative

代替スタイルの名前の文字列。

renpy.get_style_preference(preference) link

名前付きスタイルに対し、選択された代替スタイルの名前を文字列として返します。

preference

スタイル設定の名前の文字列。

renpy.register_style_preference(preference, alternative, style, property, value) link

スタイル設定に対し、代替スタイルの情報を登録します。

preference

スタイル設定名の文字列です。

alternative

代替スタイルの名前の文字列。

style

更新されるスタイル。これはスタイルオブジェクトにするか、スタイル名の文字列にします。

property

更新されるスタイルプロパティーの名前の文字列。

value

スタイルプロパティーに割り当てる値。

renpy.set_style_preference(preference, alternative) link

スタイル設定に対し、選択された代替スタイルを設定します。

preference

スタイル設定の名前の文字列。

alternative

代替スタイルの名前の文字列。

スタイルプロパティーを登録し、通常の大きい文字と、外枠付きの小さい文字のどちらかをユーザーが選択できるようにする例を示します。

init python:
    renpy.register_style_preference("text", "decorated", style.say_dialogue, "outlines", [ (1, "#000", 0, 0) ])
    renpy.register_style_preference("text", "decorated", style.say_dialogue, "size", 22)

    renpy.register_style_preference("text", "large", style.say_dialogue, "outlines", [ ])
    renpy.register_style_preference("text", "large", style.say_dialogue, "size", 24)

以下のコードにより、ユーザーが代替スタイルをボタンを使って選択できるようになります。

textbutton "Decorated" action StylePreference("text", "decorated")
textbutton "Large" action StylePreference("text", "large")

その他のスタイル関数 link

style.rebuild() link

名前付きスタイルを再構築し、初期化コードの外側でスタイルを変更できるようにします。

警告

名前付けされたスタイルは、ゲームごとのデータの一部として保存されません。つまり、保存と読み込みのサイクルにおいて、スタイルの変更は持続しません。