flutter 为Flame Game with Very Good Ventures重新生成资产模板

lsmepo6l  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(156)

所以我正在构建一个火焰游戏,我找到了this template(模板附带的实际代码是here),它是由非常好的风险投资公司(它是为Google I/O制作的Pinball项目中使用的代码)制作的。
我只是在写代码,并在assets/文件夹中添加了我的资源,到目前为止,我只需要图像,所以我删除了模板附带的所有其他资源和不必要的文件夹。我不知道如何重新生成gen/assets.gen.dart文件来反映我对assets/目录所做的更改。我试着运行我的应用程序,但显然得到了一个错误,因为我试图加载的资产没有定义。
我试图查找重新生成资产文件所需的命令,发现大多数解决方案都包含这行代码,它需要build_runnerflutter_genflutter_gen_runner依赖项。
现在,如果需要的话,我不介意添加新的库,但是如果需要的话,这些库不应该在模板的pubspec.yaml中吗?我甚至检查了Pinball项目的repo,看看他们是否必须添加这些依赖项,他们的pubspec.yaml不包括任何runner或flutter_gen
无论如何,我仍然尝试添加库并运行命令flutter packages pub run build_runner build,它设法重新生成assets.gen.dart文件以包含我的图像并删除不必要的目录,但我仍然得到一个错误。
当我做了

loadSprite(Assets.images.ramp.path);

(just就像它们在VGV模板中所做的那样),我得到了一个红色屏幕错误,因为Assets.images.ramp.path显然被计算为assets/images/assets/images/ramp.png(有一个额外的assets/images/)。
检查assets.gen.dart文件后,VGV模板似乎创建了AssetGenImage extends AssetImage类,而flutter packages ...命令创建了一个AssetGenImage没有扩展AssetImage
我很确定我在这里遗漏了一些东西,因为VGV模板和I/O弹球项目都成功地重新生成了资产文件,我只是不知道我应该做什么。
(just我没有更改pubspec.yaml中的任何其他内容,只是删除了指向我不需要的其他资产目录(如assets/audio/)的行,并添加了3个新依赖项)

v9tzhpje

v9tzhpje1#

所以你可能会得到这个错误,因为火焰默认添加了一个assets/images/前缀路径上的图像加载代码。
这就是为什么在你的错误中,你会看到那个部分被复制。
要正确使用flutter gen(它生成资源的完整路径),只需“清除那个前缀”,只需在game类上执行此操作即可,可以将此操作作为onLoad方法的第一行

images.prefix = '';

相关问题