flutter 为什么热重载在Flame游戏引擎中不起作用?

wmomyfyw  于 2022-12-05  发布在  Flutter
关注(0)|答案(2)|浏览(254)

我已经将下面的组件添加到FlameGame类中,每当我更改此组件时,我都必须热重启应用程序。是否有解决方法?

class SoldierSprite extends SpriteAnimationComponent {
  @override
  Future<void>? onLoad() async {

    var miniSprites =
        await TexturePackerLoader.fromJSONAtlas('mini.png', 'mini.json');

    var miniSpriteComponent = SpriteComponent()
      ..sprite = miniSprites[4]
      ..size = Vector2(100, 200)
      ..position += Vector2(200, 200)
      ..angle = -95;

    add(miniSpriteComponent);

    return super.onLoad();
  }
}
x7rlezfr

x7rlezfr1#

热重新加载仅适用于小部件树中的更改。
由于您的游戏存在于GameWidget中,因此如果您在进行热加载时不更新GameWidget中的key,Flutter无法知道它已经更改。

efzxgjgh

efzxgjgh2#

我也遇到过这个问题,并注意到当你把你的GameWidget Package 在一个非GameWidget中时,热重新加载**************************************************************************************************************************************************************************************************************************

class MyPage extends StatelessWidget {
  const MyPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('New Game'),
      ),
      body: GameWidget(
        game: MyGame(),
      ),
    );
  }
}

其中MyGame

class MyGame extends FlameGame {
  ...
}

相关问题