Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx 舞台是在荧屏上还是在游戏课上?_Libgdx_Box2d_Stage_Scene2d - Fatal编程技术网

Libgdx 舞台是在荧屏上还是在游戏课上?

Libgdx 舞台是在荧屏上还是在游戏课上?,libgdx,box2d,stage,scene2d,Libgdx,Box2d,Stage,Scene2d,我不熟悉场景2D,所以我有点困惑。假设我们有两个类: public GameScreen implements Screen { //override methods } public GameX extends Game { //override methods } 这两种方法都有渲染和调整大小等方法,因此我的问题是: 这两种方法中,哪一种是包含Stage/actors和Box2d内容的最佳方法?游戏类实际上是游戏的核心。它的方法由GameLoop调用,或者在发生某些事件时调用。 每个

我不熟悉场景2D,所以我有点困惑。假设我们有两个类:

public GameScreen implements Screen {

//override methods
}

public GameX extends Game {

//override methods
}
这两种方法都有渲染和调整大小等方法,因此我的问题是:


这两种方法中,哪一种是包含Stage/actors和Box2d内容的最佳方法?

游戏类实际上是游戏的核心。它的方法由
GameLoop
调用,或者在发生某些事件时调用。
每个游戏都可以有多个
屏幕
,例如
菜单屏幕
游戏屏幕
选项屏幕
信用屏幕

因此,
屏幕
表示类似于游戏的一部分。
游戏
类一次可以有一个活动的
屏幕
,它在自己的渲染中为该
屏幕
调用
reder()
pause()
resume()
的计数相同
如果更改活动的
屏幕
,则会为旧的
屏幕
调用
hide()
,为新的
屏幕
调用
show()

因此,您的问题的答案是,如果您的
游戏
非常简单,并且不包含不同的
屏幕
s,那么您可以将
阶段
放在
游戏
类中,并将
游戏
类与您的类一样对待,并且只处理
屏幕


如果您有一个以上的
屏幕
,则应使用
屏幕
界面,并在其中一个
屏幕
类别中设置
阶段

由于游戏类可以在屏幕之间切换,因此我使用这两个类别。通常我首先加载一个
loadingScreen
,加载完成后,我会切换到
mainMenuScreen
。但是您可以将一些参与者放入游戏类中,然后从那里加载屏幕实现,这真的不重要


但是对于一个干净的方法,我建议只从
游戏
创建
方法调用一个加载屏幕,然后从那里构建。因为每个游戏至少需要某种菜单和游戏屏幕本身。

这没关系。若你们有一个简单的游戏,你们可以把一切都放在游戏里。如果您想将游戏拆分为单独的屏幕,则可以将这些内容放在屏幕中,并使用game类在它们之间切换。@Tenfour04谢谢您的回答!我只是想让反馈继续编码,这很重要,这样你就清楚了。“游戏”允许您附加不同的屏幕。采用这种方法。派生的屏幕类(如LoadingScreen、GoodbyeScreen等)可以封装特定于屏幕的logi。请参阅游戏::设置屏幕。一切都将变得明朗。Stage类用于包含演员。您可以定义设置阶段时使用的spritebatch和视口:例如,hudStage=新阶段(HUDSVIEWPORT,hudSpriteBatch);