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

Godot 4 C#中AudioStreamPlayer2D节点引用找不到问题求助

解决Godot 4 C#中GetNode无法找到同级节点的问题

1. 修正节点路径的相对性

你的脚本挂在Sprite2D节点上,而目标AudioPlayerThingy是它的同级节点(同属一个父节点),GetNode("节点名")默认只会查找当前节点的子节点,所以需要用上级路径定位:

public override void _Ready()
{
    AudioStreamPlayer2D audio = GetNode<AudioStreamPlayer2D>("../AudioPlayerThingy");
    audio.Stream = GD.Load<AudioStream>("res://DRUMS.wav");
    audio.Play();
}

2. 用可视化绑定替代硬编码路径(更可靠)

直接在编辑器中绑定节点引用,彻底避免路径错误:

  • 先在脚本中声明导出变量:
    [Export]
    public AudioStreamPlayer2D AudioPlayer { get; set; }
    
  • 回到编辑器,选中挂载脚本的Sprite2D节点,在Inspector面板的「导出」区域,点击AudioPlayer旁的选择按钮,直接选中场景中的AudioPlayerThingy节点。
  • 然后在_Ready()中直接使用变量:
    public override void _Ready()
    {
        AudioPlayer.Stream = GD.Load<AudioStream>("res://DRUMS.wav");
        AudioPlayer.Play();
    }
    

3. 检查场景结构细节

  • 打开场景的Scene面板,确认AudioPlayerThingy和Sprite2D确实处于同一层级(拥有相同父节点)
  • 再次核对节点名的大小写和拼写(Godot节点名区分大小写)
  • 确认节点类型是AudioStreamPlayer2D而非AudioStreamPlayer(Godot 4拆分了2D/3D音频播放器,Godot 3中没有这个后缀)

4. 关于Godot 3到4的差异

Godot 4中GetNode()的路径规则和Godot 3基本一致,但节点类型命名有调整,比如音频播放器拆分了2D和3D版本,这是你参考旧教程可能踩的坑。

内容的提问来源于stack exchange,提问作者Shane Amare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:45:08