時間経過で選択肢をフェードインアウトする

時間経過で選択肢をフェードインアウトします。

まずscreen.rpyのchoiceスクリーンを以下のように変更します。

init python:
    import time

screen choice(items, start_time=0):
    style_prefix "choice"
    $current_time = time.time()
    # 0.1秒毎に画面を更新する
    timer 0.1 action renpy.restart_interaction repeat True

    vbox:
        for i in items:
            if "show_timer" in i.kwargs:
                if i.kwargs["show_timer"] < current_time - start_time:
                    $action = i.action
                else:
                    $action = None
                textbutton i.caption action action at show_transition(i.kwargs["show_timer"], 1.)
            elif "hide_timer" in i.kwargs:
                if i.kwargs["hide_timer"] > current_time - start_time:
                    $action = i.action
                else:
                    $action = None
                textbutton i.caption action action at hide_transition(i.kwargs["hide_timer"], 1.)
            else:
                textbutton i.caption action i.action

#フェードイン用transform
transform show_transition(timer, fade_time):
    alpha 0.
    timer
    linear fade_time alpha 1.0

#フェードイン用transform
transform hide_transition(timer):
    alpha 1.
    timer
    linear fade_time alpha 0.0

その上で次のように使用します。3秒後にフェードインで選択肢を追加表示させたいときはshow_timer引数に3を、フェードアウトさせたいときはhide_timer引数を使用します。

    "hogehoge"
    menu (start_time=time.time()):
        "hoge1":
            jump hoge_label
        "hoge2" (show_timer=3.0):
            jump hoge_label
        "hogehoge"

label hoge_label:
    "hogehoge"

フェードインアウトせず、単に選択肢を変更するだけなら以下のようにタイマーのみのscreenを定義して、選択肢を増減したラベルにジャンプさせればよいです。

    "hogehoge"
    show screen timer(3, Jump("hoge_label"))
    menu:
        "hoge1":
            jump hoge_label
        "hoge2":
            jump hoge_label
        "hogehoge"

label hoge_label:
    "hogehoge"

init:
    screen timer(time, action):
        layer "master" #masterレイヤーでないとUIを消しているときにタイマーが動かない
        timer time action action
Pocket