Я пытаюсь создать диалоговую систему в стиле ролевой игры в Godot 4, используя Tween.
вот мой код:
var isrun = false
func addText(next_text):
isrun = true
maintext.text = next_text #maintext is label node
maintext.visible_ratio = 0
var tween2 = create_tween()
tween2.tween_property(maintext, "visible_ratio", 1, len(next_text) * readFast)
func _on_button_pressed():
if isrun == false:
addText("texttexttext")
elif isrun == true:
$addText.tween2.kill(self)
isrun = false
это то, что я ожидал:
when i press button:
if it is the first time that i pressed the button: execute addText function
or if it is the second time that i pressed the button: kill tween2 in addtext funtion
Функция excute addText работает хорошо, но функция kill tween2 не работает
Как я могу решить эту проблему?
Судя по приведенному вами примеру кода, проблема относится к области действия. Вы создаете переменную tween2
в функции addText
. Поэтому в функции _on_button_pressed
оно должно быть неопределенным/нулевым.
Добавьте «глобальную» (в вашем скрипте) переменную, содержащую анимацию, и попробуйте создать анимацию в своей функции _ready
.
большое спасибо. после того, как я объявил Tween как глобальный var, он работает отлично!
Спасибо за помощь!
теперь я решил проблему!
вот модифицированный код:
var isrun = false
var tween2
func addText(next_text):
isrun = true
maintext.text = next_text
maintext.visible_ratio = 0
tween2 = create_tween()
tween2.tween_property(maintext, "visible_ratio", 1, len(next_text) * readFast)
func _on_button_pressed():
if isrun == false:
addText("texttexttext")
elif isrun == true:
tween2.kill()
isrun = false
<Tween>.kill() не принимает никаких параметров.