2

如果我像这样在 Flame 中创建一个组件:

class MyComponent extends PositionComponent {
  MyComponent() {
    // Option 1
  }

  @override
  Future<void> onLoad() {
    // Option 2
  }
}

onLoad如果我在构造函数(选项 1)或方法(选项 2)中初始化我的组件有什么区别?

4

1 回答 1

1

因此,如果您在将组件添加到游戏之前需要加载一些东西,例如图像,那么您需要进行加载,onLoad以便游戏知道它不应该将您的组件添加到游戏中,直到一切就绪里面装了。例如:

class MyComponent extends PositionComponent {
  @override
  Future<void> onLoad() async {
    final sprite = await loadSprite('flame.png');
  }
}

因此,为了使您的代码保持一致,您可以在 中进行所有初始化onLoad,即使您的所有组件都不需要它。

要知道的另一件好事onLoad是,如果您使用的是HasGameRefmixin,则将在gameRef中将其设置为您的组件onLoad,而不是在构造函数中。

于 2021-03-15T17:23:47.490 回答