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
相关产品推荐
相关产品推荐

