0

我对火焰和颤动很陌生,但我只是想为我正在从事的游戏项目建立基础,它告诉我必须初始化字段“screenSize”和“tileSize”。

import 'dart:ui';

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

class GameController extends Game {
  Size screenSize;
  double tileSize;

  GameController() {
    initialize();
  }

  void initialize() async {
    resize(await Flame.util.initialDimensions());
  }

  @override
  void render(Canvas canvas) {
    Rect background = Rect.fromLTWH(0, 0, screenSize.width, screenSize.height);
    Paint backgroundPaint = Paint()..color = Color(0xFFFAFAFA);
    canvas.drawRect(background, backgroundPaint);
  }

  @override
  void update(double t) {}

  void resize(Size size) {
    screenSize = size;
    tileSize = screenSize.width / 10;
  }

  void onTapDown(TapDownDetails d) {
  }
}
4

2 回答 2

0

如果您是 Flame 新手,请扩展BaseGame而不是Game. BaseGame将为您提供游戏引擎所需的一切,同时Game您必须自己实现一切。

您可以在此处查看基本示例,在https://examples.flame-engine.org/上还有更多示例

YouTube 上也有一些很好的教程。

Flawn 的回答对于必须初始化的值也是正确的,但是BaseGame你会自动拥有size屏幕的。

于 2021-05-20T20:19:37.737 回答
0

(我没有使用过 Flame,但这只是 Dart 特有的关于你可以做什么的观点)

你有两个选择:

  1. 设置类型screenSize和可为tileSize空,类型将是 thenSize?double
  2. 为两个变量设置初始值(硬编码或构造函数)

我不知道您想做什么,但最初将它们设置为第二个选项可能是一个好习惯。

于 2021-05-20T20:20:47.533 回答