如果 Godot 脚本 A 和 B 都扩展了脚本 C,那么 A 和 B 是否与 C 中的变量名相同?
If Godot scripts A and B both extend script C, do A and B share the same variable names of those from C?
我是 Godot 引擎的新手。
如果 gd 脚本 A 和 B 都扩展了脚本 C,并且 var_c 是脚本 C 中的变量,那么 A 中使用的 var_c 与 B 中使用的 var_c 是否不同?
所以我的脚本 A 和 B 扩展了脚本 C。
A 和 B 代表有限语句机中的不同状态。
例如,在 Godot 的初始安装(来自 Steam)附带的有限状态机演示中,假设 C 是 motion.gd 并且 A、B 是 move.gd 和 jump.gd.
我在 C 中引入了一个变量 var_c,希望它是 A 和 B 的 "shared",因为如果 var_c 在状态 A 中更新(假设我写
var_c = 123
在脚本 A) 中,当我进入状态 B 时,我希望访问 var_c 的更新值,例如
if var_c == 123:
print("A and B seem to share the same value of var_c!")
不幸的是,我在状态A中调用的var_c似乎独立于在状态B中调用的var_c。我可能犯了一个错误,但我想知道这是不是真的一般。
A中使用的var_c和B中使用的var_c一样吗?如果它们不同,我如何从另一个访问一个?喜欢 A.var_c 和 B.var_c?
谢谢。
如果每个脚本都有唯一的名称(例如:examplescriptA.gd 和 examplescriptB.gd),其中包含的变量应该是该脚本的本地变量,因为 Godot 并不真正识别全局变量最严格的意义。
如果你想要一个全局变量系统的等价物(即:一组可以从任何其他脚本访问和更新的变量),你应该考虑使用 singletons
.
文档在这里 - https://docs.godotengine.org/en/stable/getting_started/step_by_step/singletons_autoload.html
我也读过 "extending" 脚本的概念,显然这是可能的。您似乎可以更改脚本中的节点继承以扩展另一个脚本(例如:extends "res://your_script.gd"
)。唯一的怪癖似乎是您必须在 "parent" 脚本的 _ready()
函数中调用 .ready()
。然而,我还没有机会亲自测试它,而且我不确定它是否在两个方向上都有效——为此,我会选择单身路线。无论如何,如果您需要更好地参考我从中获取的完整讨论,您可以在这里找到它:https://godotengine.org/qa/2391/can-you-inherit-from-a-script
我希望其中至少有一项对您有所帮助。
我是 Godot 引擎的新手。
如果 gd 脚本 A 和 B 都扩展了脚本 C,并且 var_c 是脚本 C 中的变量,那么 A 中使用的 var_c 与 B 中使用的 var_c 是否不同?
所以我的脚本 A 和 B 扩展了脚本 C。 A 和 B 代表有限语句机中的不同状态。 例如,在 Godot 的初始安装(来自 Steam)附带的有限状态机演示中,假设 C 是 motion.gd 并且 A、B 是 move.gd 和 jump.gd.
我在 C 中引入了一个变量 var_c,希望它是 A 和 B 的 "shared",因为如果 var_c 在状态 A 中更新(假设我写
var_c = 123
在脚本 A) 中,当我进入状态 B 时,我希望访问 var_c 的更新值,例如
if var_c == 123:
print("A and B seem to share the same value of var_c!")
不幸的是,我在状态A中调用的var_c似乎独立于在状态B中调用的var_c。我可能犯了一个错误,但我想知道这是不是真的一般。
A中使用的var_c和B中使用的var_c一样吗?如果它们不同,我如何从另一个访问一个?喜欢 A.var_c 和 B.var_c?
谢谢。
如果每个脚本都有唯一的名称(例如:examplescriptA.gd 和 examplescriptB.gd),其中包含的变量应该是该脚本的本地变量,因为 Godot 并不真正识别全局变量最严格的意义。
如果你想要一个全局变量系统的等价物(即:一组可以从任何其他脚本访问和更新的变量),你应该考虑使用 singletons
.
文档在这里 - https://docs.godotengine.org/en/stable/getting_started/step_by_step/singletons_autoload.html
我也读过 "extending" 脚本的概念,显然这是可能的。您似乎可以更改脚本中的节点继承以扩展另一个脚本(例如:extends "res://your_script.gd"
)。唯一的怪癖似乎是您必须在 "parent" 脚本的 _ready()
函数中调用 .ready()
。然而,我还没有机会亲自测试它,而且我不确定它是否在两个方向上都有效——为此,我会选择单身路线。无论如何,如果您需要更好地参考我从中获取的完整讨论,您可以在这里找到它:https://godotengine.org/qa/2391/can-you-inherit-from-a-script
我希望其中至少有一项对您有所帮助。