在运行时对游戏场景中精灵的渲染顺序进行排序,将对象发布到场景中add()
,最简洁(理想情况下,最有效的)方法是什么?SpriteComponent
或SpriteAnimationGroupComponent
对象上是否有内置属性可以接收指示排序顺序并重写隐式排序顺序的int
?我想在从头开始实现我自己的 Z 排序算法之前确认在 Flame 中没有已经实现的东西。
谢谢!
z 索引顺序在 Flame 中称为priority
。 如果您在将组件添加到游戏之前知道它的优先级,则可以将命名字段priority
发送给构造函数,如下所示:
final myComponent = SpriteComponent(sprite: mySprite, priority: 5);
另一方面,如果您不知道组件将具有什么优先级(或者如果您想在组件的生存期内更改它),则必须使用FlameGame
类上的方法changePriority
。
class MyGame extends FlameGame {
...
}
final myGame = MyGame();
myGame.changePriority(myComponent, 1);
Component
上还有一个名为changePriorityWithoutResorting
的方法,可以在将组件添加到游戏之前使用。但是,如果已添加组件,则在将组件重新添加到游戏中之前,此方法不会有任何效果。