Flame onLoad 与构造函数初始化
Flame onLoad vs constructor initialization
如果我像这样在 Flame 中创建一个组件:
class MyComponent extends PositionComponent {
MyComponent() {
// Option 1
}
@override
Future<void> onLoad() {
// Option 2
}
}
如果我在构造函数(选项 1)或 onLoad
方法(选项 2)中初始化我的组件有什么区别?
如果在将组件添加到游戏之前需要加载一些东西,例如图像,那么您需要在 onLoad
中进行加载,以便游戏知道它不应该加载'在加载所有内容之前,不要将您的组件添加到游戏中。例如:
class MyComponent extends PositionComponent {
@override
Future<void> onLoad() async {
final sprite = await loadSprite('flame.png');
}
}
因此,为了使您的代码保持一致,您可以在 onLoad
中进行所有初始化,即使您的所有组件都不需要它。
关于 onLoad
的另一件好事是,如果您使用 HasGameRef
mixin,gameRef
将设置为您在 onLoad
中的组件,但不会在构造函数中。
如果我像这样在 Flame 中创建一个组件:
class MyComponent extends PositionComponent {
MyComponent() {
// Option 1
}
@override
Future<void> onLoad() {
// Option 2
}
}
如果我在构造函数(选项 1)或 onLoad
方法(选项 2)中初始化我的组件有什么区别?
如果在将组件添加到游戏之前需要加载一些东西,例如图像,那么您需要在 onLoad
中进行加载,以便游戏知道它不应该加载'在加载所有内容之前,不要将您的组件添加到游戏中。例如:
class MyComponent extends PositionComponent {
@override
Future<void> onLoad() async {
final sprite = await loadSprite('flame.png');
}
}
因此,为了使您的代码保持一致,您可以在 onLoad
中进行所有初始化,即使您的所有组件都不需要它。
关于 onLoad
的另一件好事是,如果您使用 HasGameRef
mixin,gameRef
将设置为您在 onLoad
中的组件,但不会在构造函数中。