Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 为什么我不能重新分配这个基本变量值(戈多游戏引擎)_String_Variables_Null_Var_Godot - Fatal编程技术网

String 为什么我不能重新分配这个基本变量值(戈多游戏引擎)

String 为什么我不能重新分配这个基本变量值(戈多游戏引擎),string,variables,null,var,godot,String,Variables,Null,Var,Godot,我在一个名为“var Current_Scene”的自动加载中有一个简单的变量,它没有赋值(这意味着它自动为空) 在我的游戏中,当你点击一个按钮时,“Current_Scenes”的值应该变成一个名为“Main Street”的字符串。当我在调试中检查值是否改变时,它会说“Current_Scenes”值仍然为空。即使在我尝试将“Current_Scenes”值预设为字符串“cat”时,在我尝试将其更改为“Main Street”之后,debug说还是猫。Idk我错过了什么 下面是我的代码,用于

我在一个名为“var Current_Scene”的自动加载中有一个简单的变量,它没有赋值(这意味着它自动为空)

在我的游戏中,当你点击一个按钮时,“Current_Scenes”的值应该变成一个名为“Main Street”的字符串。当我在调试中检查值是否改变时,它会说“Current_Scenes”值仍然为空。即使在我尝试将“Current_Scenes”值预设为字符串“cat”时,在我尝试将其更改为“Main Street”之后,debug说还是猫。Idk我错过了什么

下面是我的代码,用于检查我的值是否正确重新分配:(场景2内部)

下面是设置变量的自动加载内部代码:(自动加载内部)

下面是我想要更改变量值的按钮的代码:(在不同的场景1中)


谢谢您的帮助!

我没有您的场景加载代码(
removese
+
enter\u main\u scene
实现),所以我只使用了
get\u tree()。更改场景(…
。我无法以这种方式重现问题,因此可能是在您的场景加载/更改代码中。请提供这些方法的实现以进一步详细说明,或者尝试将其更改为
获取树()。更改场景()
,然后查看问题是否已修复

我的假设是,我们案例之间的区别在于,在执行
SceneChange.Current\u scene=“Main Street”
行之前,您的实现在第二个场景上调用
\u ready()
回调。如果我使用
get\u parent()。添加子场景(secondScene.instance())
,而不是
get\u tree()。更改场景()
,我就是这样。要解决这个问题,请交换执行字符串赋值的代码行,并将压缩的第二个场景添加为当前场景的子节点

我的实施:

# Autoload named 'Global'
extends Node

var global_string = "cat"


如果第二个场景添加了
add\u child

var secondScene = load("res://MainStreet.tscn")

func _on_Button_pressed():
    Global.global_string = "Main Street" # should go first
    get_parent().add_child(secondScene.instance()) # calls _ready() on second scene
正如建议的那样,您还可以使用
call\u defered(“您的改变场景的方法”)
推迟场景更改

我的Godot版本是
3.2.3

func _on_Button_pressed():
#starts world clock when start button is clicked
WorldClock._WorldTimerStart()

SceneChange.RemoveScene()
SceneChange.enter_main_street()
SceneChange.Current_Scene = "Main Street"
# Autoload named 'Global'
extends Node

var global_string = "cat"
# Script attached to the root node of "MainStreet.tscn"
extends Node2D

func _ready():
    if Global.global_string != "Main Street":
        print(Global.global_string)
# Script attached to the button on the first scene:
extends Button

func _on_Button_pressed():
    get_tree().change_scene("res://MainStreet.tscn")
    Global.global_string = "Main Street"
var secondScene = load("res://MainStreet.tscn")

func _on_Button_pressed():
    Global.global_string = "Main Street" # should go first
    get_parent().add_child(secondScene.instance()) # calls _ready() on second scene