You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Godot中通过代码实例化节点问题:InnerRect无法显示

解决代码实例化GUI节点不显示的问题
  • 先排查根节点类型:如果你的场景根节点是Node2D,直接添加Control类的InnerRect会无法显示——因为GUI控件(继承自Control的节点)必须放在CanvasLayer或其他Control节点下才能被GUI渲染系统处理。你可以先在场景中添加一个CanvasLayer节点,把原有的OuterRect移到这个CanvasLayer下,之后代码里把InnerRect也添加到这个CanvasLayer节点下,这样既不会随OuterRect移动,也能正常显示。
  • 代码中明确指定正确的父节点:如果你的脚本挂在OuterRect上,可参考以下代码:
# 创建InnerRect节点
var inner_rect = TextureRect.new()
# 加载纹理(替换成你的纹理路径)
inner_rect.texture = load("res://textures/inner_texture.png")
# 设置位置和尺寸
inner_rect.rect_position = Vector2(100, 100)
inner_rect.rect_size = Vector2(200, 200)
inner_rect.visible = true

# 获取CanvasLayer节点作为父节点(假设节点名称为"CanvasLayer")
var canvas_layer = get_parent().get_node("CanvasLayer")
# 或者如果场景根节点本身就是Control类型,直接用get_tree().current_scene
canvas_layer.add_child(inner_rect)
  • 调整Z索引避免遮挡:如果InnerRect被OuterRect挡住,给InnerRect设置更高的Z值,比如inner_rect.z_index = 10(默认Z索引为0)。
  • 确认纹理加载有效:可以通过print(inner_rect.texture)输出检查是否为null,避免因纹理路径错误导致节点无内容显示。

内容的提问来源于stack exchange,提问作者Rando Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:30:06