現在、アニメーションを動的に作成し、それを再生して、テキストの長さと 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
** デバッグ プロセスが停止しました **