Ren'Py memo

Ren'Pyの個人的なメモ

screen内のデザインを変える

はじめにざっくり

Ren'Pyはものすごくざっくり言うと、
シナリオを記述するlabelと画面を記述するscreenという種類に分かれています。

label例

label op:

    $ quick_menu = True
    scene bg_room with dis

    "――時は十月の三十一日。\n
    青葉も散った秋の頃、片田舎の一室にて。"
(省略)

screen例

screen music_room():

    on "show" action Hide("omake")
    key "mouseup_3" action Show("omake")
    style_prefix "music"
    add gui.game_menu_background

    vbox:
        xalign 0.1
        yalign 0.5

        textbutton _("ゴーストタウン") action mr.Play("audio/ukuk00.ogg")
(省略)

htmlでいうところのscriptタグで直書きみたいなpythonもあるんですが、
どいつもこいつも説明することが多すぎるので今回は割愛します。
とりあえず画面とシナリオで書き方がちがうんだ!ふーん!!で覚えておけばいいです。

screen内のデザインを変える

Ren'Pyはデフォルトで用意されているものがたくさんあります。
(シナリオさえ書ければデフォ状態でもゲームとしての体裁が整ってるレベルです)

ただ作っていく内にボタンの色変更とか位置変更とかしたくなってきます。
そういった時にスタイルの学習が必要になります。
スタイルのプロパティー — Ren'Py Documentation


スタイルとはなんぞや?

cssに似てます。css知らない場合はすみませんこの例え話おしまいです。
しかし例え話弾数は1なのでcss通じそうな個人HP経験者が見ていると信じ話を続けます。


例えば上記に出たscreen内でtextbuttonの色を黒に変えたい時。

部分指定で書く

textbutton _("ゴーストタウン"):
  action mr.Play("audio/ukuk00.ogg")
  text_color "#000"

styleタグ直書きで書く……みたいな感じで書くとこうなります。
もっと細かく言うと「このボタンにだけこのstyleを反映させたい」時に使います。

コロンとインデントは必須ではありませんが、後で編集しやすくなります。
いやtextbutton _("ゴーストタウン") action mr.Play("audio/ukuk00.ogg") text_color "#000"
でもいいんですけど後で変えたい時にどうも見づらいんで……

テキストで指定できるプロパティはいろいろあります。
スタイルのプロパティー — Ren'Py Documentation

colorじゃなくてtext_color?

おそらくtextbuttonがtextとbuttonという二つの要素を抱えているため
text_という接頭をつけないとRen'Pyがどこのこと言ってんの?ってなるからです。
初めての教材としてtextbuttonは普通にミス選択ですね。ややこしや~~

一括指定で書く

screen music_room():

(省略)
style_prefix "music"
(省略)

style music_button_text is button_text

style music_button_text:
    color "#000"

こちらは一括指定の方法。
cssファイルにp{~~と書いてサイト内のpタグの様式を統一する感じですね。


style_prefix "music"

まずscreen内にstyle_prefix "(お好きな名前)"を書く必要があります。
これで指定しておくと、このscreen内のbuttonやtextはすべて(お好きな名前)が
頭についたstyleの参照が優先されるようになります。
style_prefixに関する細かい説明のドキュメントはこちら。

その後(お好きな名前)_がついたstyleを記述します。
textのstyleであることは明記しているのでtext_の接頭は必要ありません。


style music_button_text is button_text

ここのis~は親スタイルを指定しています。
ここで記述しなかった部分などは親が参照されます。
スタイル — Ren'Py Documentation

ここで指定している親のbutton_textは通常screens.rpyの最初のほうに記述されています。
そこから更にgui.rpyで指定されているbuttonのプロパティが参照されてるのですが……
自分もここらへんはよくわかっていないので深堀はしません。
後から指定で上書きできてる?のでわかってなくともなんとかなる所が多いです。


かなり曖昧な説明ですが基本こんな感じです。
位置指定とかもあるんですが私の書き方がぐっちゃぐちゃなんで今度……