何时在libgdx中使用actor?什么是利弊?

我在写简单的太阳系模拟器。这是我的第一个libgdx项目。我在主菜单中使用舞台和演员,非常方便,尤其是触摸事件处理。但是…看这些例子,我发现没有人在实际的游戏逻辑中使用演员。如果我应该使用actor作为行星类的父母,或者只是写我自己的类,我会徘徊。行星将不可触摸,它们只能在帧之间移动,因此动作MoveBy的第三个参数必须是帧之间的时间。那就是缺点。使用Actor有哪些优点?

回答:

演员的主要优点是动作,命中测试和触摸事件以及演员组。

如果您的游戏逻辑需要,动作可以快速轻松地进行补间。

您可以随时调用stage.hit(x,y)来返回第一个返回true的actor,该actor返回为其编写的任何命中逻辑(通常检查x,y,width,height的边界)。返回此actor或返回null,以不断迭代actor的hit方法以寻找一个hit

actor。如果没有演员被击中,则返回Null。

击中用于舞台的触摸事件。Actor的touch方法将传递局部坐标,并且Stage会处理对象的重叠,例如,如果一个actor覆盖了另一个actor,使得另一个actor不应接收touchDown,则在覆盖的actor上返回true,以停止对actor调用touchDown。下面”。这也会在返回true的actor上设置“焦点”,以便调用Actor的touchUp。

您可以将演员分组在一起,以将整个演员组作为一个单元执行动作,触摸事件等。

一些缺点:演员需要一个在某种程度上限制功能的阶段。许多编码器使用其他逻辑来确定游戏对象的状态,而不是使用scene2d动作(例如box2d)来确定。如果将Actors用于游戏对象,则可能需要两个Stage,一个用于ui,一个用于游戏世界。如果您不使用它们,则可能仍然会使用自己的SpriteBatch和Camera。请记住,Actor只有一个抽象的Draw方法,因此无论如何您仍然需要创建绘制逻辑。您可能会将TextureRegion或Sprite保留为Actor的私有字段。如果要使用自己的更新逻辑,则可以重写act(float

delta)方法以获取增量时间(如果使用Action,则调用super.act(delta))。

因此,如果您有自己的逻辑并且不打算使用Stage所提供的大量功能,则可以节省一些资源并推出自己的针对特定应用的解决方案。如果您可以在不限制所需功能的情况下使用某些专业人士,请继续进行游戏逻辑的第二阶段。

以上是 何时在libgdx中使用actor?什么是利弊? 的全部内容, 来源链接: utcz.com/qa/410505.html

回到顶部