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

Godot引擎中通过脚本创建的Sprite2D为何未显示在场景中?

问题原因及解决方法

核心原因

你在_Ready()里创建了Sprite2D对象,但没有将它添加到场景树中。Godot只会渲染场景树内的节点,游离的对象不会被显示出来。

解决方案1:将新建的Sprite2D添加到场景树

修改_Ready()方法,在设置完属性后,调用AddChild()把新建的节点挂载到当前节点(或其他场景树节点)下:

using Godot;
using System;

public partial class PlayerCharacter : Sprite2D
{
    public override void _Ready()
    {
        Sprite2D player = new Sprite2D();
        // 直接强转成Texture2D,无需先转Texture
        Texture2D spriteTexture = (Texture2D)ResourceLoader.Load("res://Main/Assets/ball.png");
        player.Texture = spriteTexture;
        player.Position = new Vector2(100, 100);
        // 关键步骤:将节点加入场景树
        AddChild(player);
    }

    public override void _Process(double delta)
    {
    }
}

解决方案2:简化代码,直接使用当前节点

你的PlayerCharacter本身就继承自Sprite2D,完全没必要新建额外的Sprite2D对象,直接操作自身属性即可:

using Godot;
using System;

public partial class PlayerCharacter : Sprite2D
{
    public override void _Ready()
    {
        // 直接给当前节点设置纹理和位置
        Texture = (Texture2D)ResourceLoader.Load("res://Main/Assets/ball.png");
        Position = new Vector2(100, 100);
    }

    public override void _Process(double delta)
    {
    }
}

额外注意事项

  • 确认res://Main/Assets/ball.png路径正确,文件确实存在于项目对应目录中,纹理加载失败也会导致看不到精灵。
  • 如果用第一种方案,注意节点层级关系,避免出现位置叠加或遮挡问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:24:54