"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 方法中吗?