将生成的图像放入 Flame.Images
资产缓存的最有效方法是什么?
我可以从这个方法中获取图像,但我不知道如何将生成的Image
对象放入缓存中。
Future<Image> decodeImageFromPixels(
Uint8List pixels,
int width,
int height, {
bool runAsWeb = kIsWeb,
})
这目前不起作用,因为图像缓存仅适用于文件。但是你可以很容易地在你的游戏类中创建一个图像缓存(只是一个地图),可以是静态地图,也可以是你可以通过具有HasGameRef<YourGameClass
mixin 的组件访问的地图。
它看起来像这样:
class MyGame extends FlameGame {
final generatedImages = <String, Image>{};
@override
Future<void> onLoad() async {
await super.onLoad();
final image = await Flame.images.decodeImageFromPixels(...);
generatedImages['image name'] = image;
}
}
然后在您想要使用图像的组件类中,如果它是SpriteComponent
例如:
class MyComponent extends Component with HasGameRef<MyGame> {
@override
Future<void> onLoad() async {
await super.onLoad();
sprite = Sprite(gameRef.generatedImages['image name']);
}
}
或者,如果您没有扩展组件,但仍然使用 aSpriteComponent
您可以在任何您想要该组件的地方执行此操作(可以访问gameRef
):
final spriteComponent = SpriteComponent.fromImage(gameRef.generatedImages['image name']);
请注意,您也可以将generatedImages
地图设为静态,并在MyGame.generatedImages['image name'];
没有gameRef
.