1

現在、アニメーションを動的に作成し、それを再生して、テキストの長さと 1 秒あたりの文字の設定速度に基づいてテキストを表示しようとしています。

コードで再作成しようとしているのは、このアニメーションです。 つまり、ラベルのプロパティにプロパティ トラックがあり、更新モードが連続モードで補間モードが線形のアニメーションです。
エディタのアニメーション トラック
visible_characters

シーンの構造は次のとおりです。
シーン構造

DialogBox ノードの背後にあるスクリプト:

extends Control

export(String, MULTILINE) var Text = ""
export(int) var CharactersPerSecond = 100

func _ready():
    $Panel/Label.set_text(Text)
    print($Panel/Label.get_text())
    createAnimation()
    $AnimationPlayer.play("show-text")
    print("is playing " + str($AnimationPlayer.is_playing()))
    print("current animation " + $AnimationPlayer.current_animation)

func createAnimation():
    var animationLength = Text.length() / (CharactersPerSecond as float)

    print(animationLength)

    var animation = $AnimationPlayer.get_animation("show-text")
    animation.clear()

    var trackIdx = animation.add_track(Animation.TYPE_VALUE)
    animation.track_set_path(trackIdx, "Panel/Label:visible_characters")
    animation.track_set_interpolation_type(trackIdx,Animation.INTERPOLATION_LINEAR)
    animation.value_track_set_update_mode(trackIdx, Animation.UPDATE_CONTINUOUS)

    animation.track_insert_key(trackIdx, 0, 0)
    animation.track_insert_key(trackIdx, animationLength, Text.length())

テスト目的で、テキストはエクスポートされたText変数を使用してエディターで設定されており、いくつかの lorem ipsum です。

シーンを実行すると、パネルとラベルが表示されますが、ラベルにテキストが表示されず、空のままですが、印刷ステートメントに従ってshow-textアニメーションが再生されます

出力ウィンドウに出力されるデータは次のとおりです。

** デバッグ プロセス開始 **
Godot Engine v3.1.2.stable.mono.official - https://godotengine.org
OpenGL ES 3.0 レンダラー: AMD Radeon R7 200 シリーズ
ラベル テキスト: Magnam consequatur vel エイリアス earum accusantium. Nobis voluptatem voluptatem quaerat adipisci voluptas. Numquam id error earum consectetur veniam. Quaerat quibusdam quas sunt alias et blanditiis corporis. Cupiditation rem ut natus est molestiae quidem. Magnam consequatur vel 別名 earum accusantium。Nobis voluptatem voluptatem quaerat adipisci voluptas. Numquam id error earum consectetur veniam. Quaerat quibusdam quas sunt alias et blanditiis
animationlength: 4.44
is playing: True
current animation: show-text
** デバッグ プロセスが停止しました **

4

1 に答える 1

2


問題は、キーを挿入するだけでは不十分なアニメーションの長さを設定する必要があることでした

animation.clear()修正 後に次の行を追加します。

animation.set_length(animationLength)
于 2019-12-01T20:45:29.657 に答える