我目前正在尝试动态创建动画,并根据文本的长度和每秒设置的字符速度来播放动画以显示文本。
我要在代码中重新创建的是此动画:
因此,在标签的属性visible_characters
上具有属性轨道的动画,其中更新模式为连续,插值模式为线性
“对话框”节点后面的脚本:
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 alias earum accusantium。 Nobis voluptatem voluptatem quaerat adipisci voluptas。 Numquam id错误earum consectetur veniam。 Quaerat quibusdam quas sunt alias et blanditiis corporis。丘比特性骚动奎德姆。马格南(Magnam)结果别名别名羽扇豆。 Nobis voluptatem voluptatem quaerat adipisci voluptas。 Numquam id错误earum consectetur veniam。 Quaerat quibusdam quas sunt alias et blanditiis
动画长度:4.44
正在播放:True
当前动画:show-text
**调试过程已停止**
答案 0 :(得分:1)
所以问题是我仍然需要设置动画的长度
仅仅插入键还不够
在animation.clear()
修复后添加以下行:
animation.set_length(animationLength)