Данные глобальной переменной не переданы [Godot.2.15]

Я создавал в Godot «мысленный математический калькулятор сложения», где пользователю показывается новый вопрос при нажатии кнопки «on_Button_pressed», а сумма сохраняется в «global var c», а затем ввод осуществляется через «Lineedit» и сохраняется. в "var d". Однако, когда "var c" передается для сравнения с "var d" в "Lineedit", он передает значение "Null". Как можно передавать значения между двумя функциями.

extends Panel

# global variables
var a = " "
var b = " "
var c = " "
var d = " "

func _ready():
    pass

#Generate Random number and store sum in "var c"    
func _on_Button_pressed():

    randomize()
    var a = floor (rand_range(1,100))
    var b = floor (rand_range(1,100))

    var c = a+b
    print (a)
    print (b)
    print ("c = "+ str(c))

    get_node("RichTextLabel").set_text(str(a)+"+"+str(b)+"=")



#User_input
func _on_LineEdit_text_entered( text ):
    d = get_node("LineEdit").text

#pass sum "var c" for comparison with user_input "var d" 

print(c)<-- NUll value being passed.


#Accesing value via node method
#   var e = get_node("Panel").get("c").to_float()<-- Error-"Panel node doesn't exist"
#   print(e)


#convert d to float 
    var f = d.to_float()
    print(f)

#Compare sum with user_input
#   if  f == c:
#       get_node("RichTextLabel").set_text("Right Answer")
#   else:
#       get_node("RichTextLabel").set_text("Wrong Answer")

person starzar    schedule 02.01.2019    source источник
comment
Добро пожаловать в Stackoverflow! Куда и в какую другую функцию передается ваша переменная c? В _on_LineEdit_text_entered c не используется.   -  person Maximilian Peters    schedule 02.01.2019
comment
@Maximilian Peters -var c (sum) передается из _on_Button_pressed () в func_on_LineEdit_text_entered () для сравнения с user_input var f (var d преобразовано в float) в #Compare sum with user_input. Сравнение закомментировано () как при запуске скрипт приведет к ошибке и не отобразит значения задействованных переменных.   -  person starzar    schedule 03.01.2019


Ответы (1)


Попробуйте заменить строчку

var c = a + b

С участием

c = a + b

Var c объявляет новую переменную, работающую в области видимости функции. Ключевое слово var должно быть в самом внешнем объявлении кода.

Надеюсь, это поможет!

person eltee    schedule 03.01.2019