android - Android 游戏的 UI - 我有哪些选择?

标签 android android-canvas android-ui

首先,让我提供一些上下文以使问题更准确:

我正在开发一款 Android 游戏(使用 SurfaceView、Canvas 等),它在游戏玩法部分运行得非常好。我最初尝试在菜单和其他 UI 元素之上使用 View 派生元素,并通过实验和查看 Stackoverflow 上的一些问题很快意识到这是一个非常糟糕的主意,因为它们不能很好地混合(比如 LinearLayout在 SurfaceView 之上)。

我看到了 3 条可能的路径:

A) 继续在 SurfaceView 之上使用 View 元素(并处理它的问题,例如可怕的滞后)

B) 在 SurfaceView/Canvas 上手动绘制 UI 元素。类似于:canvas.drawBitmap(menuBitmap, posX, posY, ...);然后手动处理触摸,并遭受屏幕 fragment

C) 使用专门为此设计的库/框架来处理 UI 的所有绘制、触摸按钮、拖动以滚动等。类似于 View 及其派生元素,但专为使用绘制的游戏和应用程序设计表面 View 。

还有更多我没有看到的选项吗?而“C”对我来说似乎是最好的,但是有图书馆吗?哪个?

编辑:忘了问最明显的问题,还有:其他专业/商业游戏如何处理这个问题?

谢谢

最佳答案

我真的不喜欢这些游戏引擎(AndEngine、Corona、Unity3D、cocos2d等)。我想学习 Android,这比 engine X 或 Y 对我的职业生涯更有用。

我所有的游戏都是在没有游戏引擎的情况下创建的。我对几乎所有内容都使用选项 (A),而且我没有看到任何滞后或迟缓。

例子:

Minesweeper 3D的游戏画面是一组布局和 View 以及一个用于保存 OpenGL 3D 字段的 SurfaceView。

Box Topple的游戏画面也是一组布局和 View 以及为处理和显示 box2d 物理引擎而创建的自定义 View 。

查看我的 other games还有……

关于android - Android 游戏的 UI - 我有哪些选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719535/

相关文章:

android - 如何获取对象的属性

android - Asynctask 无法显示服务器响应

java - 多线程更新表面 View Canvas

android - 从 ICS ActionBar 切换到 Lollipop 工具栏后缺少导航图标

android - 是否可以从 PreferenceActivity 中的 Preference 启动 DialogFragment?

android - Findbugs android gradle 插件

android - jetpack compose 中的 fitSystemWindows 对应项

android - 在空白页面中使用 android 结果创建 PDF

安卓 Canvas : draw transparent circle on image

android - 如何创建 Android Material 设计 UI 小部件?