Ren'Py memo

Ren'Pyの個人的なメモ

サウンドモードを作る

公式doc
ja.renpy.org

1.音楽ファイルの定義

init python:

    music_room = MusicRoom(fadeout=1.0)

    music_room.add("audio/ukuk00.ogg", always_unlocked=True)
    music_room.add("audio/machi1.ogg", always_unlocked=True)
    music_room.add("audio/kaiz.ogg", always_unlocked=True)
    music_room.add("audio/wawawa.ogg", always_unlocked=True)
    music_room.add("audio/ukiwa0.ogg", always_unlocked=True)
    music_room.add("audio/reee00.ogg", always_unlocked=True)
    music_room.add("audio/zaz01.ogg", always_unlocked=True)
    music_room.add("audio/hero00.ogg", always_unlocked=True)
    music_room.add("audio/yogaku.ogg", always_unlocked=True)
    music_room.add("audio/011pf00.ogg", always_unlocked=True)
    music_room.add("audio/koko.ogg", always_unlocked=True)

これはoptions.rpyでもscreen.rpy内でもどこでも書いてよし

always_unlocked=True:Trueにすると常にアンロックされた状態になる。
ゲーム内で再生されてからアンロックしたい場合はFalse、
またはmusic_room.add~にこの文を記載しない(デフォルトがFalseのため)

music_room.add内はaction(https://ja.renpy.org/doc/html/screen_actions.html)も使えるので
再生されると変数をオンにする仕組みを作って同時に説明文(解説、本編で流れる箇所、借りた元のURL表示など)を表示することができそう


再生と同時に説明文を表示する例

init python:
    koko = False
    music_room.add("audio/koko.ogg", action=ToggleVariable("koko", true_value=True, false_value=False)

screen music_room:
    textbutton  _("地球は丸いね") action music_room.Play("audio/koko.ogg")

    if koko == True:
        text _("説明文")

2.サウンドモードの画面を作る

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 music_room.Play("audio/ukuk00.ogg")
        textbutton _("町だよ") action music_room.Play("audio/machi1.ogg")
        textbutton _("幽霊船") action music_room.Play("audio/kaiz.ogg")
        textbutton "kitten in the kitchen" action music_room.Play("audio/wawawa.ogg")
        textbutton _("歩くのはやいよ") action music_room.Play("audio/ukiwa0.ogg")
        textbutton _("心残り") action music_room.Play("audio/reee00.ogg")
        textbutton _("静かな情熱") action music_room.Play("audio/zaz01.ogg")
        textbutton _("誘蛾灯") action music_room.Play("audio/hero00.ogg")
        textbutton _("カントリー・ファミリー") action music_room.Play("audio/yogaku.ogg")
        textbutton "home" action music_room.Play("audio/011pf00.ogg")
        textbutton  _("地球は丸いね") action music_room.Play("audio/koko.ogg")

    vbox:
        xalign 0.55
        yalign 0.5

        textbutton _("▲ 前の曲") action music_room.Previous()
        null height 10
        textbutton _("▼ 次の曲") action music_room.Next()
        null height 15
        textbutton _("ランダム再生") action music_room.RandomPlay()
        null height 10
        textbutton _("シャッフルオン") action music_room.ToggleShuffle()
        null height 25
        $ musi = _preferences.get_volume('music')
        text _("BGM音量 [musi:.0%]")
        null height 5
        bar value Preference("music volume")

    vbox:
        xalign 0.8
        yalign 0.5

        textbutton "BACK":
            action Show("omake")
            text_size 35

    on "replace" action music_room.Play()

    on "replaced" action Play("music", "audio/ukuk00.ogg")

style music_button is button
style music_button_text is button_text

style music_slider is gui_bar:
    xsize 250

style music_button:
    activate_sound "audio/se_akch.ogg"

style music_button_text:
    text_align 0.5
    xalign 0.5
    yalign 0.6
    size 25
    line_spacing 10

textbutton以外にもimagebuttonとかimagemapとかでもできるはず
音楽再生中は再生してる曲のボタンが押せなくなりinsensitive設定で表示される

    on "show" action Hide("omake")
    key "mouseup_3" action Show("omake")

このスクリプトは表示されたと同時に前の画面を消す命令
右クリックで前の画面に戻るようにしてる

別のボタンを押すときややラグあり?(仕様かも)

3.完成図

(23/01/31)変数名だだかぶり悲劇発見伝したのでmrからmusic_roomへ 被らなそうな長ったらネームにしました