如何解决实例节点在运行时不可见
我有一个网格,它扩展了TileMap,并且试图在其中生成面板。面板扩展了Area2D。
层次结构:
主场景->玩家网格场景->网格场景-> [玩家场景,x个面板场景(通过spawn_panels函数添加)]。
请注意,以上这些都是在2D编辑器中添加的,只有面板是通过脚本添加的。
要生成面板,我要在_ready的Grid中运行此功能:
func spawn_panels(charType):
var panelInit = null
var panel = null
var childPanel = null
if charType == PLAYER:
panelInit = AllyPanel
elif charType == ENEMY:
panelInit = EnemyPanel
for x in grid_s_x:
for y in grid_s_y:
panel = panelInit.new(x,y)
self.add_child(panel)
panel.set_owner(self)
panel.set_name("panel" + str(x) + str(y))
panel.position = map_to_world(Vector2(x,y)) + cell_size / 2
但是,运行游戏时面板不可见。我已经打印了树,可以看到它们已正确添加,并且还验证了它们没有超出范围,因为我已经将其位置硬编码为0、0和玩家位置(玩家可见),但仍然存在不可见。
感谢您的帮助,谢谢!
解决方法
当添加从.new()创建的实例并将其添加到节点树时,结果GDScript不喜欢它。这意味着您必须预加载/加载它(而不是通过类引用它),然后以这种方式添加它。
即:
var a = preload("res://a.tscn")
add_child(a)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。