是的,当我开始游戏时,球正在进入(并离开)2D区域
是的global.gd
,是一个自动加载的脚本
在全局中,我有一个很大的area2d来检测是否有人进入。
var chase_ball
全局内部正在更新,但在Global.chase_ball
其始终为 false (默认值)
最初area2D位于敌人节点内部,但我希望area2D固定在主场景中,而不是与敌人一起移动
全局.gd:
extends Node2D
var chase_ball = false
func _process(delta):
print(chase_ball)
func _on_ball_detector_body_entered(body):
chase_ball = true
func _on_ball_detector_body_exited(body):
chase_ball = false
输出:
true
false
true
false
(same loop as above)
敌人.gd:
func _process(delta):
print(Global.chase_ball)
输出:
false
false
false
false
(same loop as above)
预期结果是Global.chase_ball
根据func _on_ball_detector_body_entered/exited(body):
如果您正在自动加载
global.gd
,则编辑器不会将方法连接到信号。是的,您有与信号匹配的方法,并且您可能通过连接它们来创建它们......但连接不是脚本的一部分。相反,它与 一起保存
Node
(即保存在场景中)。因此,当您自动加载所述脚本时,Godot 将为它创建一个新节点,并且它没有连接。
现在,您说您希望
Area2D
将发出信号的设备出现在您的主场景中。因此阻力最小的路径是:本身有一个脚本
Area2D
。使用编辑器将 的信号连接到
Area2D
其自身,因此这个新脚本中有适用于它们的方法。并从这些方法中调用全局。
当然,此时,您不需要在 中包含这些方法
global.gd
,您可以删除它们并chase_ball
直接访问: