flutter - 你如何在运行时对 Flame (Flutter) 中 Sprite 的渲染顺序进行排序?

标签 flutter dart rendering flame

在运行时对游戏场景中 Sprite 的渲染顺序进行排序的最简洁(理想情况下,最有效)的方法是什么,将对象发布到场景中? SpriteComponentSpriteAnimationGroupComponent 对象是否有内置属性可以接收 int 来指示排序顺序并覆盖隐式排序顺序?在从头开始实现我自己的 Z 排序算法之前,我想确认 Flame 中没有已经实现的东西。

谢谢!

最佳答案

z-index 顺序在 Flame 中称为 priority。 如果您在将组件添加到游戏之前知道它具有什么优先级,则可以将命名字段 priority 发送到构造函数,如下所示:

final myComponent = SpriteComponent(sprite: mySprite, priority: 5);

另一方面,如果您不知道组件将具有什么优先级(或者如果您想在组件的生命周期内更改它),则必须使用 changePriority 方法FlameGame 类。

class MyGame extends FlameGame {
  ...
}

final myGame = MyGame();
myGame.changePriority(myComponent, 1);

Component 上还有一个名为 changePriorityWithoutResorting 的方法,可以在将组件添加到游戏之前使用。但是如果组件已经被添加,这个方法将不会有任何效果,直到组件被重新添加到游戏中。

关于flutter - 你如何在运行时对 Flame (Flutter) 中 Sprite 的渲染顺序进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69160407/

相关文章:

dart - 错误 : The instance member . .. 无法在初始化程序中访问

android - 从后台 flutter isolate 向 Android 方法发送平台消息

javascript - 软件 3d 引擎中的投影数学

javascript - 为什么广告在我的开发盒上停止呈现?

flutter - firebase messages 和 flutter sdk 驱动版本解决失败

Flutter Stateful Widget 构造函数不包含所有成员

android - flutter build appbundle "can' t 找到动态引用的类 android.util.LongArray"

html - IE6 错误地渲染了 UL

flutter - flutter 覆盖文本字段上/下键行为

flutter - 来自 MaterialApp 构建器的导航器