Flutter Flame:适当的视口以匹配屏幕尺寸

Flutter Flame: proper Viewport to match the screen size

如何找出屏幕尺寸并根据屏幕分辨率放置我的游戏物品?我想 运行 在网络客户端上玩我的游戏。



我想调整我的红色游戏组件的大小,使其适合屏幕并居中。
LibGdx 对这个概念有一些好处 java class:Link

如果您总是希望它是正方形,您可以使用 FixedResolutionViewport 并将其设置为最小边:

class MyGame extends FlameGame {
  Future<void> onLoad() async {
    double maxSide = min(size.x, size.y);
    camera.viewport = FixedResolutionViewport(Vector2.all(maxSide)); 
  }
}

如果您想要游戏的(视口)size 在另一个组件中,您可以添加 HasGameRef 混合并以相同的方式使用游戏的 size 变量:

class MyComponent extends Component with HasGameRef {
    MyComponent() : super(anchor: Anchor.center);

  Future<void> onLoad() async {
    final gameSize = gameRef.size;
    // To add a position component in the center of the screen for example:
    // (when the camera isn't moved)
    position = gameSize/2;
  }
}

如果您想要其他尺寸,我建议您查看 game.cameragame.camera.viewport,它们也提供了一些其他选项。