Flutter使用Flame框架开发时Sprite不显示仅黑屏问题求助
问题原因
报错的核心原因是你在FlameGame的构造函数中直接调用add方法添加组件,此时游戏实例还未完成初始化布局,不满足组件挂载的前置条件。报错日志里也明确给出了提示:prepare/add called before the game is ready. Did you try to access it on the Game constructor? Use the "onLoad" or "onMount" method instead.
你手动提前调用组件onLoad的尝试无法解决问题,因为错误根源不是组件自身未加载,而是游戏实例还没准备好接收组件挂载。
修复方案
将添加MyCrate组件的逻辑从MyGame的构造函数,移到MyGame重写的onLoad生命周期方法中即可,修改后的MyGame代码如下:
class MyGame extends FlameGame { @override Future<void> onLoad() async { // 必须先调用父类的onLoad方法 await super.onLoad(); // 游戏初始化完成后再添加组件 add(MyCrate()); } }
修改完成后重新运行项目,即可正常在屏幕中心展示crate.png精灵图。
注意事项
只有在游戏未完成初始化的构造阶段调用add会触发该报错,游戏正常运行过程中动态添加组件直接调用add方法即可。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

