"wait frame to end" 是否有像 "WaitForEndOfFrame" 统一的功能?
Is there an function for "wait frame to end" like "WaitForEndOfFrame" in unity?
我需要在每个 update()
之间做一些计算,所以我需要确保在下一帧之前处理一个函数。
有什么办法可以实现吗?就像Unity中的“WaitForEndOfFrame”?
与 Unity 不同,在 Flutter 中我们没有 update()
函数。那是在我们使用的默认 API 中,有一些方法可以利用这种效果。通常我们使用 Ticker
并创建动画以获取与屏幕刷新率同步的定期更新。
但是,如果您尝试做的是 运行 在 build()
调用之间进行某些操作,WidgetsBinding.instance!.addPostFrameCallback()
可能就是您要查找的内容。
这里有一个详细的答案,可能对这方面有帮助:
您可以在您的 FlameGame
中覆盖 updateTree
(或者在您的 Component
中,如果您只希望它发生在子树的 update
之前)并在所有其他组件开始更新之前进行计算。这将是在最后一帧之后,除了第一帧,但是你可以通过设置一个布尔值来跳过那一帧。
所以像这样:
class MyGame extends FlameGame {
bool isFirstTick = true;
@override
void updateTree(double dt) {
if(!isFirstTick) {
// Do your calculations
} else {
isFirstTick = false;
}
super.updateTree(dt);
}
}
但我不得不问,你为什么需要这样做? render
在所有 update
调用完成之前不会被调用,难道你不能把你的计算放在正常的 update
方法中吗?
我需要在每个 update()
之间做一些计算,所以我需要确保在下一帧之前处理一个函数。
有什么办法可以实现吗?就像Unity中的“WaitForEndOfFrame”?
与 Unity 不同,在 Flutter 中我们没有 update()
函数。那是在我们使用的默认 API 中,有一些方法可以利用这种效果。通常我们使用 Ticker
并创建动画以获取与屏幕刷新率同步的定期更新。
但是,如果您尝试做的是 运行 在 build()
调用之间进行某些操作,WidgetsBinding.instance!.addPostFrameCallback()
可能就是您要查找的内容。
这里有一个详细的答案,可能对这方面有帮助:
您可以在您的 FlameGame
中覆盖 updateTree
(或者在您的 Component
中,如果您只希望它发生在子树的 update
之前)并在所有其他组件开始更新之前进行计算。这将是在最后一帧之后,除了第一帧,但是你可以通过设置一个布尔值来跳过那一帧。
所以像这样:
class MyGame extends FlameGame {
bool isFirstTick = true;
@override
void updateTree(double dt) {
if(!isFirstTick) {
// Do your calculations
} else {
isFirstTick = false;
}
super.updateTree(dt);
}
}
但我不得不问,你为什么需要这样做? render
在所有 update
调用完成之前不会被调用,难道你不能把你的计算放在正常的 update
方法中吗?