我正在使用Canvas为2D图形构建一个Android游戏。我到目前为止的方式是我有一个GameView
(SurfaceView
),其GameLoop
调用其onDraw()
方法。
现在,对于每个场景,我扩展了GameView
,而对于MainMenu
,我绘制了所有按钮和放大器。背景。当我单击一个Button时,我将确定在MainScene(扩展GameView)onTouchEvent中接下来要做什么。假设我单击“设置”按钮,然后我将启动一个仅包含新场景的新活动(另一个场景扩展GameView)。
因此,对于每个场景,我都有一个新的Activity
,它只包含一个GameView扩展,其中包含GameLoop
每秒20/30次绘制。在onTouchEvents
我会开始一项新活动/完成一项活动或做其他事情。
MainActivity(MainScene) - > SettingsActivity(SettingsScene)或StoreActivity(StoreScene)等。 这是一个正确的方法吗?或者效率低下?
我无法使用canvas找到有关多场景游戏应用程序的教程或很多内容。
答案 0 :(得分:1)
在开发标准Android应用时,实际上每个场景的新活动都可以。对于简单的游戏或者当您不想手动管理资源时,这将是正常的(当系统需要资源时将会销毁活动,并在需要时重新创建活动)。在这种方法中,您无法完全控制场景转换,并且您需要为每个活动重新启动一些事情,这些活动可能会在整个游戏中进行一次。
如果您希望更快,更高效地进行场景转换,则至少还有3种变体。
片段。而不是为每个场景启动活动,您可以替换包含场景视图的碎片。在这种方法中,您可以更好地控制转换和碎片状态。
观。您可以使用相同的方式替换视图,例如使用Frame布局作为容器。
场景抽屉。您可以在视图中替换Drawer类,而不是替换视图。例如,您可以创建一个包含方法绘制(Canvas,args ...)的界面场景,并使所有场景都实现它。之后,您可以在View中替换想要绘制的场景。
我更喜欢将http://libgdx.badlogicgames.com/用于简单的Android游戏。主要好处是您可以在桌面上运行游戏进行测试,而不是等待设备上的部署。