迁移到 flame v1.0.0

Migrating to flame v1.0.0

我正在从 Flame v0.29.4 迁移到 Flame v1.0.0-rc8 我找不到关于如何获取 initialDimensions、如何通过 engine.widget 获取引擎小部件、如何初始化 Sprite 对象(之前通过 Sprite('path_to_asset_file')),以及如何设置 SpriteComponent 的宽度和高度(之前通过 SpriteComponent.rectangle)。

这是几个问题,所以我会给出几个答案:

  1. 如何获得inititialDimensions

inititialDimensions 不再需要,onGameResizeonLoad 之前调用,这将为您提供游戏的大小。您还可以通过将 HasGameRef mixin 添加到您的 Component 并调用 gameRef.size.

来获取游戏的大小
  1. 如何获取flutter widget?

您现在将游戏包装在 GameWidget 中,而不是使用 .widget:

import 'package:flutter/material.dart';
import 'package:flame/game.dart';

void main() {
  final myGame = MyGame();
  runApp(
    GameWidget(
      game: myGame,
    ),
  );
}
  1. 如何初始化一个Sprite

您通常需要 SpriteComponent,而不是原始的 Sprite

创建 Sprite:

class MyGame extends FlameGame {
  Sprite player;

  @override
  Future<void> onLoad() async {
    player = Sprite.load('player.png');
  }
}

创建 SpriteComponent:

class MyGame extends FlameGame {
  SpriteComponent player;

  @override
  Future<void> onLoad() async {
    final sprite = await loadSprite('player.png');
    player = SpriteComponent(sprite: sprite);
    // And you usually want to add your component to the game too.
    add(player);
  }
}
  1. 如何设置组件的大小?

只需执行 component.size = Vector2(width, height);component.width = width; + component.height = height