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

为何我的SFML Sprite无法显示纹理?游戏基类绘制问题求助

问题:继承GameObject基类后Sprite无法加载纹理(仅显示无纹理图形)

我正在开发一款游戏,创建了GameObject基类供多个子类继承,该类包含接收窗口引用的draw绘制方法。但现在通过继承类绘制时,Sprite仅显示无纹理的图形;此前直接创建Sprite并绘制时,能正常加载占位纹理EmptySquare.png。

相关代码文件:

  • main.cpp
  • Game.h
  • Game.cpp
  • GameObject.h
  • GameObject.cpp

运行截图:
运行时无纹理Sprite显示

纹理截图:
正常的EmptySquare.png纹理

排查方向

  • 检查纹理生命周期:确认GameObject或其子类中的纹理对象是否为类成员(而非局部变量),避免绘制时纹理已被销毁。直接创建Sprite时纹理可能处于有效作用域,继承后对象的构造/析构逻辑可能导致纹理提前释放。
  • 验证纹理加载流程:确认纹理是在基类还是子类中加载,若基类未实现加载逻辑,或子类覆盖加载方法但未正确执行,会导致Sprite无纹理。可在loadFromFile()后打印返回值,判断纹理是否加载成功。
  • 检查draw方法的Sprite传递:确保draw方法中传递的Sprite是引用或有效指针,避免值传递Sprite时,原纹理对象已失效导致拷贝后的Sprite无纹理。
  • 确认纹理路径:继承类中加载EmptySquare.png的路径是否与直接创建Sprite时一致,排查工作目录变化导致的文件找不到问题。
  • 核对Sprite的纹理赋值:检查GameObject初始化或绘制前,是否调用了Sprite::setTexture()方法,且传入的纹理对象是有效的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:06:50