【问题标题】:Android Game Developement Several scenesAndroid游戏开发几个场景
【发布时间】:2014-12-26 01:39:42
【问题描述】:

我正在使用 Canvas for 2D Graphics 为 android 构建游戏。到目前为止我这样做的方式是我有一个GameView (SurfaceView),它有一个GameLoop,它调用它的onDraw() 方法。

现在,对于每个场景,我扩展了 GameViewMainMenu,例如,我绘制了所有按钮和背景。当我单击一个按钮时,我将在 MainScene(扩展 GameView)onTouchEvent 中确定下一步该做什么。假设我点击了设置按钮,然后我将启动一个新的 Activity,它只包含一个新场景(另一个场景扩展了 GameView)。

所以对于每个场景,我都有一个新的 Activity,它只包含一个 GameView 的扩展,其中包括一个 GameLoop,每秒可以绘制 20/30 次。在onTouchEvents 中,我要么开始一项新活动/完成一项活动,要么做其他事情。

MainActivity (MainScene) -> SettingsActivity(SettingsScene) 或 StoreActivity(StoreScene) 等。 这是正确的方法吗?还是效率低?

我找不到有关使用画布的多场景游戏应用程序的教程或大量可阅读的内容。

【问题讨论】:

标签: java android canvas surfaceview


【解决方案1】:

在开发标准 Android 应用时,实际上为每个场景启动新的 Activity 是可以的。简单的游戏或者不想手动管理资源的时候也可以(系统需要资源的时候会销毁Activity,需要的时候会重新创建)。在这种方法中,您无法完全控制场景转换,您需要为每个可能在整个游戏中启动一次的活动重新启动一些东西。

如果您想让场景转换更快、更高效,您至少还有 3 个变体。

  1. 片段。代替为每个场景启动活动,您可以替换包含场景视图的片段。在这种方法中,您可以更好地控制转换和片段状态。

  2. 视图。你可以用同样的方式替换视图,而不是替换片段,例如使用框架布局作为容器。

  3. 场景抽屉。您可以只替换视图中的 Drawer 类,而不是替换视图。例如,您可以创建一个包含方法 draw(Canvas, args...) 的界面 Scene 并让您的所有场景都实现它。之后,您可以替换要在 View 中绘制的场景。

我更喜欢将http://libgdx.badlogicgames.com/ 用于简单的安卓游戏。主要好处是您可以在桌面上运行游戏进行测试,而不是等待在设备上部署。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多