我想指出我对Android游戏开发还不熟悉。我已经尝试了几种编程游戏的方法,并发现它们都有效,但它们都有自己的优势。所以我想知道哪种方式更好/更常用。例如,如果我们正在尝试制作拼图游戏,我们需要许多互相交互并对触摸事件做出反应的拼图对象。
方式1:
正如我从java中学到的,如果你有许多行为相同的对象,你应该创建类,然后创建该类的对象。我尝试了这个游戏项目并创建了扩展ImageView的类“PuzzlePiece”。然后在我的主程序中,我将它们添加到我的布局中,并将它们从主要活动中移除。这非常复杂而且很慢。并且它也不是正确的方法。
方式2:
我将游戏对象添加为组件(例如ImageView,ImageButton,带有图像背景的自定义布局)。通过这种方式,我可以更好地控制它们,同时拥有多个对象并让它们相互交互更容易。但是这种方法非常慢,而且感觉不是正确的方法。
方式3:
我在Activity中添加了SurfaceView,并使用draw()方法在画布上绘制了所有对象。这种方法要快得多,但这样我对对象的控制能力就会降低。例如,在画布上绘制许多对象并让它们都响应触摸事件或相互交互更难实现。
还有其他一些我错过的方法,或者我的方法之一接近正确的做法吗?
答案 0 :(得分:1)
你可以使用android类构建东西,或者如果你足够熟练,你可以从andengine.org或其他一些开源游戏引擎开始,这些引擎使用opengl es,其方式主要是将opengl部分抽象出来。你仍然需要做一个公平的配置,但它不会像你从头开始构建基于opengl的应用程序那么糟糕。
andengine.org
还有不少其他开源Android游戏引擎,这些引擎得到开发社区的体面支持。做一些谷歌搜索并检查出来。否则,当你注意到大多数你想要完成游戏的事情时,使用普通的android视图会变得非常缓慢和笨拙。
答案 1 :(得分:1)
在原生的android方式中,我认为方式3是正确的。但正如您之前所经历的那样,它非常混乱且难以处理(根据设备或操作系统版本,您将面临来自GC的严重帧丢失。
如果您只是锻炼,方式1很容易理解Android的架构。 方式3可以训练您布局渲染技术。但从不考虑在市场上发布。您将获得Android碎片的可怕体验。
如果你想创造将在市场上发布的真实游戏,你必须使用OpenGL。有几种游戏引擎可以使用OpenGL。