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