1.Activity
AndEngine 是一款以 OpenGLES 方式进行画面渲染的 2D 游戏引擎,可以运行在支持
Android 1.6 及以上版本的系统当中。应该说,相较 Libgdx 引擎,AndEngine 拥有更多的游
戏组件与扩展功能。并且与 Libgdx 不同,它在默认情况下已经可以支持中文,采用屏幕坐
标系绘也更符合一般 Android 绘图习惯。
由于 AndEngine 是专供 Android 使用的 2D 游戏引擎,所以作为启动类的 Activity 肯定必不
可少,而 AndEngine 也理所应当的提供给我们这样一个 Activity,那就是 BaseGameActivity。
一个标准的 AndEngine 应用,至少应该对 BaseGameActivity 做如下继承:
public class TestActivity extends BaseGameActivity{
@Override
public Engine onLoadEngine() {
return null;
}
@Override
public void onLoadResources() {
}
@Override
public Scene onLoadScene() {
return null;
}
@Override
public void onLoadComplete() {
}
}
2.回调方法
其中四个必须被重载函数的启动顺序如下:
onLoadEngine->onLoadResources->onLoadScene->onLoadComplete 具体的讲,AndEngine会首先加载Engine类实例通知系统游戏引擎的基本运行方式,而后加载游戏资源,其次加载游戏场景实例,最后通过onLoadComplete通知用户加载完毕并于此进行善后工作。 此外,由于BaseGameActivity类重载了父类Activity的onResume与onPause函数以保证其自身的正常运行,所以不建议在继承BaseGameActivity时再次重载上述函数(重载的话不要忘记super调用),推荐直接重载AndEngine提供的onGamePaused和onGameResumed实现同等功能。
上文介绍了AndEngine的基本运行机制与运行流程,然而仅仅这样AndEngine还是无法实际运行,因为Engine与Scene都没有获得具体实现。假如我们想要在屏幕上显示出随机出现的彩色线段,那么就要把创建的彩色线段加入Scene。
3.BaseGameActivity
BaseGameActivity是整个游戏的主体部分,它包含了一个游戏引擎并且还包有一个SurfaceView对象,这个SurfaceView对象专门提供给引擎在上面进行绘图。一个这样的Activity只能包含一个游戏引擎,如果想要进行界面Activity的转换,可以使用Android系统本身提供的Activity转换机制来实现。
4.Engine
游戏引擎实际上是把游戏分成了各不相关的很多时间片段,在每个时间片段上同步绘制和更新整个游戏场景(Scene)上所有在游戏中正处在活动状态的对象。通常情况下一个引擎驱动一个游戏场景,当然除了SplitScreenEngine。
5.Camera
由于不能把整个游戏场景都展示在显示屏上,摄像机(Camera)截取一块在游戏场景中的用来显示在显示屏上的矩形区域。通常情况下,一个场景(Scene)只使用一个摄像机(Camera)。Camera类有几个子类,用于放大缩小摄像机的视野和平滑过渡摄像机的移动。
6.Scene
场景类Scene是所有在游戏中活动对象的根容器,此容器可以容纳各种在游戏中显示的游戏对象。通常情况下,Scene分为很多层,每一层都可以容纳特定数量(固定数量或者动态数量)的对象。
7.Entity
实体就是可以在场景中被绘制出来的对象,例如游戏中的精灵们,矩形等各种图形,文字和直线。实体通常都会有以下几种属性:位置、旋转角度、放大缩小倍数、颜色等。
8.Engine Option
定义引擎对象Engine的参数对象。
9.RatioResolutionPolicy
IResolutionPolicy接口的实现,这个对象告诉AndEngine如何处理不同屏幕大小的设备。RatioResolutionPolicy会根据特定的长宽比例最大化游戏视图SurfaceView对象,这样游戏对象就不会因为缩放而变形。