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

Godot中无法通过信号或GetNode访问PackedScene子节点求助

问题描述

我希望在编辑器中从Candlestick场景设置Body Hollow场景内Top节点的缩放属性。单独运行Body Hollow场景时一切正常,但运行Candlestick场景时功能失效。尝试用$Node获取Body Hollow节点后调用scale_x方法会出现空值错误,仿佛Top节点不存在。

节点树说明

  • Candlestick场景:根节点为Candlestick(Node2D类型),包含Body Hollow子节点
  • Body Hollow场景:根节点为Body Hollow(Node2D类型),包含Top子节点(Sprite2D类型)

相关代码

挂载到Candlestick的代码

class_name Candlestick
extends Node2D

@export var body_hollow: BodyHollow

func _ready():
  print("Candlestick is running...")

func _process(_delta):
  if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT):
    body_hollow.scale_x(200)

挂载到Body Hollow的代码

class_name BodyHollow
extends Node2D

signal scale_changed(_x: float)

func scale_x(_x: float) -> void:
  scale_changed.emit(_x)

func _process(_delta):
  if Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):
    scale_x(200)

挂载到Top的代码

class_name BodyHollowHandles
extends Sprite2D

# 连接Body Hollow的scale_changed信号
func _on_body_hollow_scale_changed(_x):
  scale.x = _x
  scale.y = _x

解决方案

问题核心是信号未在场景实例化时正确连接:单独运行Body Hollow场景时,你可能在编辑器手动关联了scale_changed信号与Top节点的处理方法,但当Body Hollow作为子场景被嵌入Candlestick场景时,编辑器内的信号连接不会自动继承。

修复步骤

  1. 在代码中强制连接信号
    修改Body Hollow的脚本,在_ready方法里主动找到Top节点并绑定信号,确保场景无论在哪实例化都能生效:
class_name BodyHollow
extends Node2D

signal scale_changed(_x: float)

func _ready():
  # 按编辑器内的节点名称查找Top节点(注意大小写一致)
  var top_node = $Top
  if top_node:
    scale_changed.connect(top_node._on_body_hollow_scale_changed)

func scale_x(_x: float) -> void:
  scale_changed.emit(_x)

func _process(_delta):
  if Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):
    scale_x(200)
  1. 校验节点引用有效性
    在Candlestick脚本中添加空值判断,避免因节点未赋值导致的错误:
func _ready():
  print("Candlestick is running...")
  if not body_hollow:
    print("错误:body_hollow节点未在编辑器中赋值!")
  1. 确认节点名称一致性
    确保Top节点的名称与代码中$Top的写法完全一致(Godot节点名称区分大小写),避免找不到节点的情况。

完成以上修改后,无论单独运行Body Hollow场景,还是在Candlestick场景中调用,Top节点的缩放都能正常响应。

内容的提问来源于stack exchange,提问作者Christos Rymenidis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:57:25