本节书摘来自异步社区《Android 3D 游戏案例开发大全》一书中的第6章,第6.3节游戏的架构,作者 吴亚峰 , 于复兴 , 杜化美
6.3 游戏的架构
Android 3D 游戏案例开发大全
本节主要介绍本游戏的类框架,通过本节的介绍,读者可以进一步了解本游戏的开发过程,为后面要开发的代码部分打下坚实的基础。
6.3.1 各个类简要介绍
为了使读者可以更好地了解各个类的作用,本小节将本游戏中用到的所有类分为4部分进行介绍,而每个类的代码将在后面的小节中相继给出。
1.公共类
Activity的实现类TXZActivity。
TXZActivity是本游戏中的主控制类,此类继承自Activity,是整个游戏的控制类,同时也是整个游戏的入口。
常量类Constant。
本类是常量类,该类主要是存储一些静态常量和静态方法。
2.辅助界面相关类
欢迎界面类TXZWelcomeView。
本类是欢迎界面类,该类是在游戏开始时进行调用。
主菜单界面类TXZMenuView。
本类是主菜单界面类,该类负责绘制菜单界面,以及通过单击按钮跳转到其他界面,例如,进入游戏、设置、选关、帮助、关于等,也可以通过单击返回键直接退出游戏。
主菜单界面机器人部件类MenuBodyPart。
本类是主菜单界面机器人部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。
主菜单界面机器人动作执行类MenuDoActionThread。
本类是主菜单界面机器人动作的执行类,该类主要负责执行机器人的各个动作。
设置界面类TXZSetView。
本类是设置界面类,该类负责设置界面的绘制,该界面的主要功能是实现声音的设置,单击对应的按钮将进行相关的设置。
设置界面机器人部件类SetBodyPart。
本类是设置界面机器人部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。
设置界面机器人动作执行类SetDoActionThread。
本类是设置界面机器人动作的执行类,该类主要负责执行机器人的各个动作。
选关界面类TXZSelectView。
本类是选关界面类,该类负责绘制选关界面,在该界面中玩家可以选择已经解锁的关卡从而进入相应的游戏界面。
选关界面机器人部件类SelectBodyPart。
本类是选关界面机器人部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。
选关界面机器人动作执行类SelectDoActionThread。
本类是选关界面机器人动作的执行类,该类主要负责执行机器人的各个动作。
关于界面类TXTAboutView。
本类是游戏关于界面类,该类负责绘制游戏关于界面,该界面对游戏版权进行了说明,按下返回键可以返回到菜单界面。
帮助界面类TXZHelpView。
本类是游戏帮助界面类,该类负责绘制游戏帮助界面,该界面对游戏玩法进行了说明,单击向右方向键可查看下一条说明;单击向左方向键可查看上一条说明。在第一页单击向左方向键或在最后一页单机向右方向键返回到主菜单界面。
枚举类WhichView。
本类是枚举类,该类主要是存储一些界面的类型。
3.游戏界面相关类
游戏主界面类TXZGameSurfaceView
本类是游戏的主界面类,主要负责游戏界面中各个对象的创建及各个实体的绘制等工作。
游戏线程类TXZDoActionThread。
本类是游戏线程类,其主要负责监听与执行整个游戏过程中产生的动作。
摇杆动作线程类YGDoActionThread。
本类是摇杆动作线程类,其主要负责的是监听与执行摇杆的动作。
机器人类Robot。
本类是机器人类,该类主要负责机器人的组装与绘制,其中包括各个界面中机器人的组装和绘制。
游戏中动作类Action
本类是游戏中动作类,其主要提供了创建动作对象的构造方法,该类对象有动作数据与动作类型。
动作种类枚举类ActionType。
本类是动作种类枚举类,主要负责提供游戏过程中用到的动作的类型,即摄像机的动作、机器人的动作、视角的转换动作、摇杆的移动动作和抬起动作。
游戏界面机器人部件类BodyPart
本类是游戏界面中机器人的部件类,该类的主要功能是提供给了组装机器人、机器人绘制,以及机器人运动的各种方法。
部件的数据类BodyPartData
本类是机器人某个部件的数据类,其中包括机器人子骨骼在初始坐标系中的不动点、子骨骼在父骨骼坐标系中的平移、旋转,以及旋转的辅助平移。
机器人的动作数据类ActionGenerator
本类是机器人的动作数据类,其中包括机器人各种动作的数据。
游戏中动态数据类GameData。
本类是游戏中动态数据类,其主要负责提供游戏中用到的动态数据,以及修改数据的方法。
游戏中静态数据类GameStaticData。
本类是游戏中静态数据类,其主要负责提供游戏中用到的静态数据。
游戏中的关卡类GuanQiaData
本类是游戏中的关卡类,主要负责提供关卡的数据,以及游戏界面中需要的一些数据和方法。
顶点数据管理类 VertexDataManager。
本类是顶点数据管理类,该类负责加载界面所需物体的obj文件与初始化物体顶点位置坐标数据和顶点纹理坐标数据。
加载图片类 PicDataManager。
本类是加载图片的类,该类主要提供了将图片数据加载进内存的方法。
绘制物体类VertexTexture3DObjectForDraw。
本类是绘制物体类,该类负责对物体进行普通的绘制。
绘制物体类VertexTextureNormal3DObjectForDraw。
本类是绘制物体类,该类负责对加载物体进行带光照的绘制。
4.相关工具类
箱子排序类CompareDis。
本类是箱子的排序类,该类实现了接口Comparable,其是根据摄像机与箱子的距离排序。
模型加载类LoadUtil。
本类是模型加载类,该类从obj文件中将模型的相关信息加载进来,然后生成顶点位置坐标数据、顶点纹理坐标数据和法向量数据,最后构造对应的模型对象。
法向量类Normal。
本类是法向量类,该类主要提供了计算平均法向量的方法。
屏幕自适应工具类ScreenScaleUtil。
本类是屏幕自适应工具类,该类主要提供了计算缩放情况的方法。
屏幕自适应工具类ScreenScaleResult。
本类是为ScreenScaleUtil服务,两者共同完成缩放工作,实现游戏全屏显示功能,即实现游戏屏幕的自适应。
记录关卡工具类SharedPreferencesUtil
本类是记录关卡工具类,该类的作用是记录玩家最近一次的关卡数,若是第一次进入游戏,默认为第一关。
声音加载类SoundUtil。
本类是声音加载工具类,该类主要提供了声音缓冲池初始化的方法及声音的播放方法。
法向量的计算类VectorUtil
本类是计算法向量的工具类,其中有向量叉积的计算方法和向量规格化的方法。
6.3.2 游戏框架简介
在前一小节中介绍了游戏中用到的所有类,读者可能对每个类的理解并不深刻,本小结将从游戏的整体架构来介绍,如图6-22所示。
从图6-22所示中可以看到,本游戏的类很多,这里不一一介绍,接下来按照程序运行的顺序介绍部分类的作用及游戏的整体框架,具体步骤如下。
(1)打开本游戏,首先进入游戏的主控制类TXZActivity,在该类中首先跳转到欢迎界面TXZWelcomeView。
(2)欢迎界面TXZWelcomeView结束后跳转到主菜单界面TXZMenuView。
(3)在主菜单界面TXZMenuView中单击“设置”按钮进入设置界面TXZSetView,可以对游戏进行设置;单击“选关”按钮进入选关界面TXZSelectView;单击“关于”按钮进入关于界面TXTAboutView,可以查看该游戏版权所属的相关信息;单击“帮助”按钮进入帮助界面TXZHelpView,可以查看游戏的帮助信息。
(4)在主菜单界面TXZMenuView中单击“开始游戏”按钮进入游戏界面TXZGameSurfaceView