godot - _load_data:条件 !f 为真。返回: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
我知道这是一种骇人听闻的解决方案——我见过更好的建议,但它们似乎不适用于这种情况(无论你点击哪里,标签都会计数)。至少这种方法确实有效。
希望这可以帮助。
推荐阅读
- sql-server - 根据 SQL Server 版本,我们可以在 SQL Server 表上创建多少个索引?
- php - 有没有办法简化这个 foreach 循环?
- sql - 执行查询时如何获取主键值?
- python - 又一次 web.py 名称冲突
- android - 无法从 API 渲染图像
- swift - 如何将firebase数据放入两个tableViews?
- apache-spark - 在火花执行器上找不到 Apache Phoenix JDBC 驱动程序
- excel - 代码在我手动运行时有效,但在 Workbook_Open 事件运行时无效
- html - 当我尝试将网站部署到 github 时出现 npm 错误
- sqlite - 获取关系上所有相关列的计数