如何在运行时对 Flame (Flutter) 中精灵的渲染顺序进行排序?

Dig*_*mon 3 rendering dart flutter flame

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

谢谢!

spy*_*don 5

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

final myComponent = SpriteComponent(sprite: mySprite, priority: 5);
Run Code Online (Sandbox Code Playgroud)

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

class MyGame extends FlameGame {
  ...
}

final myGame = MyGame();
myGame.changePriority(myComponent, 1);
Run Code Online (Sandbox Code Playgroud)

还有一个方法可以在组件Component添加changePriorityWithoutResorting到游戏之前使用。但如果该组件已经添加,则在将该组件重新添加到游戏中之前,此方法不会产生任何效果。