_load_data:条件 !f 为真。返回:ERR_CANT_OPEN(戈多)
_load_data: Condition !f is true. Returned: ERR_CANT_OPEN (Godot)
我大约 2 周前开始使用 Godot,但在这段代码上得到了 _load_data: Condition !f is true. Returned: ERR_CANT_OPEN (Godot)
:
extends Area2D
var points = 0
var pointAdder = 1
var pointMultiplier = 1
# Called when the node enters the scene tree for the first time.
func _input(event):
if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT and event.pressed:
points = (points + pointAdder)*pointMultiplier
get_node("../scoreLabel").text = str(points)
节点树:
Spatial (Node)
├─backgroundMap :: TileMap
└─scoreLabel :: Label
├─treeClickableArea :: Area2D <<
├─treeSprite :: Sprite
└─treeCollider :: CollisionShape2D
我正在尝试显示 treeCollider
被点击的次数。当我启动游戏时出现错误,无论我点击哪里,它都会计数。
好的,这是一种解决方法,但这会起作用(我已经在 Godot 3.2 上测试过)
保持相同的节点设置 - 最终代码如下所示:
extends Area2D
var points = 0
var pointAdder = 1
var pointMultiplier = 1
var mouseover = false
func _input(event):
if (mouseover and event is InputEventMouseButton && event.pressed):
points = (points + pointAdder)*pointMultiplier
get_parent().get_node("scoreLabel").text = str(points)
func _on_Area2D_mouse_entered():
mouseover = true
func _on_Area2D_mouse_exited():
mouseover = false
从底部的两个函数可以看出,您必须将 2 个信号连接到 Area2D:mouse_entered()
和 mouse_exited()
。当它询问要连接到哪个节点时,连接到它自己(选择相同的 Area2D)。
为了完成这项工作,我添加了变量 mouseover
并将其设置为 false。对于 mouse_entered()
信号,mouseover
设置为 true
。对于 mouse_exited()
,它被设置为 false
。这将在您单击之前跟踪鼠标是否确实在您的区域上方。测试时,scoreLabel
在 Area2D
被点击时计数,但在点击其他地方时则不会。
我知道这是一种骇人听闻的解决方案 - 我见过更好的建议,但它们似乎不适用于这种情况(无论您单击何处,标签都会增加)。至少这个方法肯定有效。
希望这对您有所帮助。
我大约 2 周前开始使用 Godot,但在这段代码上得到了 _load_data: Condition !f is true. Returned: ERR_CANT_OPEN (Godot)
:
extends Area2D
var points = 0
var pointAdder = 1
var pointMultiplier = 1
# Called when the node enters the scene tree for the first time.
func _input(event):
if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT and event.pressed:
points = (points + pointAdder)*pointMultiplier
get_node("../scoreLabel").text = str(points)
节点树:
Spatial (Node)
├─backgroundMap :: TileMap
└─scoreLabel :: Label
├─treeClickableArea :: Area2D <<
├─treeSprite :: Sprite
└─treeCollider :: CollisionShape2D
我正在尝试显示 treeCollider
被点击的次数。当我启动游戏时出现错误,无论我点击哪里,它都会计数。
好的,这是一种解决方法,但这会起作用(我已经在 Godot 3.2 上测试过)
保持相同的节点设置 - 最终代码如下所示:
extends Area2D
var points = 0
var pointAdder = 1
var pointMultiplier = 1
var mouseover = false
func _input(event):
if (mouseover and event is InputEventMouseButton && event.pressed):
points = (points + pointAdder)*pointMultiplier
get_parent().get_node("scoreLabel").text = str(points)
func _on_Area2D_mouse_entered():
mouseover = true
func _on_Area2D_mouse_exited():
mouseover = false
从底部的两个函数可以看出,您必须将 2 个信号连接到 Area2D:mouse_entered()
和 mouse_exited()
。当它询问要连接到哪个节点时,连接到它自己(选择相同的 Area2D)。
为了完成这项工作,我添加了变量 mouseover
并将其设置为 false。对于 mouse_entered()
信号,mouseover
设置为 true
。对于 mouse_exited()
,它被设置为 false
。这将在您单击之前跟踪鼠标是否确实在您的区域上方。测试时,scoreLabel
在 Area2D
被点击时计数,但在点击其他地方时则不会。
我知道这是一种骇人听闻的解决方案 - 我见过更好的建议,但它们似乎不适用于这种情况(无论您单击何处,标签都会增加)。至少这个方法肯定有效。
希望这对您有所帮助。