由于AndEngine包的下属类较多,并且细分也较为庞杂,在一篇文章中一次性介绍完毕几乎不可能实现。所以下面开始,小弟会就AndEngine的一些核心模块进行简明扼要的说明,但如果前文做过说明的下文会一笔带过。
PS:事实上,就连AndEngine作者也不可能做到详细介绍,毕竟到目前为止AndEngine压根没有出过文档。(连andengineexamples下的示例代码都已经和最新的AndEngine源码脱离了……)
1、关于Engine:
Engine是AndEngine的核心所在,它对AndEngine引擎中Camera、Scene等重要组件进行了统一管理,但必须和BaseGameActivity合作使用,利用EngineOptions类可以对其进行必要的参数配置。
2、关于BaseGameActivity:
如果您想正常使用AndEngine,那么当前Activity就必须继承自BaseGameActivity或其子类,否则你连初始化Engine也做不到。虽然它还有父类BaseActivity,但BaseActivity只提供了一些异步加载方法而无关AndEngine的主体实现。因此,BaseGameActivity就是实际上的AndEngine最基础用类无疑。
3、关于IResolutionPolicy:
IResolutionPolicy是一个接口类,其中只规定了onMeasure函数的实现格式。事实上,AndEngine中所有该类具体实现的作用与标准View中的onMeasure函数几乎一致,也会被标准View中的onMeasure函数重载调用(具体调用在AndEngine的RenderSurfaceView类当中)。而且除BaseResolutionPolicy外,所有AndEngine的IResolutionPolicy实现也都调用了View的setMeasuredDimensionProxy函数。
在AndEngine的org.anddev.andengine.engine.options.resolutionpolicy包下有一组IResolutionPolicy接口的具体实现,分别为BaseResolutionPolicy(除了会校验一下屏幕大小外,什么也不做)、FillResolutionPolicy(拉伸游戏画面为全屏填充,视摄像机大小不同,会有不同程度变形)、FixedResolutionPolicy(强行规定游戏画面为固定大小,此设置不会自动适应屏幕大小),RatioResolutionPolicy(按比例修正画面大小,以适应屏幕大小),RelativeResolutionPolicy(根据构建RelativeResolutionPolicy时的缩放参数,缩放游戏屏幕为指定比例)。
最后,所有IResolutionPolicy的实现类,都要随着EngineOptions于初试化时传递给Engine实例才起作用。
4、关于Camera:
该类即我们常说的游戏摄像机,在AndEngine的Camera有两种作用,一是用以调节屏幕的显示区域,二是利用HUD类实际绘制游戏屏幕于手机之上。
5、关于Scene:
场景容器,作用类似于LGame中的Screen,能够将某一特定场景作为游戏模块进行调用,我们可以利用它来切换当前游戏的画面与触摸屏监听,切换方法是利用Engine.setScene。
6、关于Entity:
Entity是IEntity接口的具体实现,也是AndEngine中无论Scene、Layer、Sprite(这个继承关系比较远,中间隔了BaseRectangle、RectangularShape、GLShape、Shape等上级类,不过追溯源头始终继承自Entity)的统一父类,通过Entity我们可以让AndEngine中场景,或场景中某精灵实现统一效果的缩放、旋转、变色等操作。
7、关于Texture:
Texture是AndEngine所提供的纹理用类,但Texture本身(在AndEngine中)并没有提供加载图片的方法,必须通过TextureRegionFactory类(更准确的说,依赖它内部封装的TextureRegion、BuildableTexture等类)与之合作才可以加载纹理。除此之外,AndEngine要求所加载纹理(图片)大小必须为2的整数次幂。
8、关于TextureRegion:
TextureRegion的父类是抽象类BaseTextureRegion,主要功能也被封装在BaseTextureRegion类当中,AndEngine提供了TextureRegionFactory这个工厂类用以简化构建TextureRegion的流程。单就TextureRegion来讲,它的作用似乎就是让系统知道如何剪切一个纹理,并返回一个这样的纹理给你。
然而,事实上AndEngine中只有TextureRegion才更接近于通常意义上的Texture。或者说,只有TextureRegion + Texture时,我们才能较为完整的使用AndEngine纹理功能。严肃的讲,AndEngine中的Texture有很多功能必须靠TextureRegion最终完成,比如AndEngine中的Sprite必须加载TextureRegion才能使用Texture,而不是直接调用Texture,TMXTiledMap中读取指定瓦片返回的也是TextureRegion,而非直接的Texture(进行画面渲染时AndEngine内部会调用TextureRegion中的Texture引用,但也只允许如此调用);应该说,AndEngine中见Texture几乎必见TextureRegion,二者无法分离,缺一不可。
9、关于TextureOptions
在AndEngine中,TextureRegionFactory类决定纹理的加载路径,Texture类作为承载纹理的实体对象,而TextureOptions类决定了纹理的渲染方式。
也即是说,OpenGLES将以何种方式显示纹理图像,都由TextureOptions类所决定。在当前最新版本的AndEngine中,默认提供了:
1、NEAREST(Nearest滤波,实现上依赖GL_NEAREST做不光滑过滤,纹理环绕模式为GL_CLAMP_TO_EDGE,显示速度快画质差)
2、BILINEAR(双线性插值,实现上依赖GL_LINEAR做线性滤波,纹理环绕模式为GL_CLAMP_TO_EDGE,显示速度慢画质佳)
3、REPEATING(与NEAREST同为Nearest滤波,但纹理环绕模式为GL_REPEAT,会自动填充纹理上的空白区域,显示速度较快画质差)
4、REPEATING_BILINEAR(与BILINEAR同为双线性插值,但纹理环绕模式为GL_REPEAT,会自动填充纹理上的空白区域,显示速度很慢画质佳(低端机跑此模式异常悲剧,高端机尚可))
5、NEAREST_PREMULTIPLYALPHA(所有[PREMULTIPLYALPHA]结尾的TextureOptions与其它同名类差别仅在于是否支持根据Alpha值设置透明纹理,以下同)
6、BILINEAR_PREMULTIPLYALPHA
7、REPEATING_PREMULTIPLYALPHA
8、REPEATING_BILINEAR_PREMULTIPLYALPHA等静态对象。
以上TextureOptions实例都可以通过“TextureOptions.XXXXXX”的方式进行引用并设置给Texture。事实上,除了AndEngine提供的Texture渲染模式,我们也可以按照规则自行构建需要的TextureOptions。
比如构建一个混插的TextureOptions:
new TextureOptions(GL10.GL_LINEAR_MIPMAP_LINEAR, GL10.GL_LINEAR_MIPMAP_NEAREST, GL10.GL_REPEAT, GL10.GL_REPEAT, GL10.GL_MODULATE, true);
另外,TextureOptions默认还有DEFAULT模式,不过该模式实际引用为NEAREST_PREMULTIPLYALPHA,也就是纹理低画质但支持Alpha。如果您想要兼容低端机,则建议不要使用含有【BILINEAR】字样的AndEngine加载大图,而应直接使用TextureOptions.DEFAULT或TextureOptions.NEAREST_PREMULTIPLYALPHA;因为BILINEAR模式对硬件要求较高,如果以此模式将较大纹理放到低端机上渲染,速度很可能无法保证。但是,假如您的游戏只针对高端机用户便无需介怀了。
相关推荐
**Android游戏引擎AndEngine** AndEngine是一款专门为Android平台设计的游戏开发引擎,它基于OpenGL ES技术,使得开发者可以创建出高性能的2D游戏。这个引擎以其轻量级、易上手和开源的特点,受到了许多独立开发者...
AndEngine 是一个专门为 Android 平台设计的 2D 游戏引擎,它提供了一个强大的游戏开发框架,帮助开发者快速创建高质量的游戏。下面我们将详细介绍 AndEngine 的使用入门。 一、AndEngine 的基本运行原理 ...
在这个“android游戏引擎AndEngine:Physics物理碰撞效果”主题中,我们主要探讨的是AndEngine如何实现物理碰撞效果,特别是自由碰撞和小球碰撞的检测。 首先,AndEngine的Physics模块是基于Box2D库的,Box2D是一个...
AndEngine是一款专为Android平台设计的免费且开源的2D游戏引擎,由Nicolas Gramlich开发。它以其高效、易用性以及丰富的功能而受到广大开发者欢迎,特别适合初学者入门游戏开发。以下是对AndEngine核心知识点的详细...
本教程将引导你快速掌握AndEngine的基础知识和核心功能,助你开启Android游戏开发之旅。 一、AndEngine的安装与设置 在开始使用AndEngine前,你需要将其导入到Android Studio项目中。这通常通过添加依赖库到项目的...
《深入解析Android游戏引擎AndEngine及其应用》 AndEngine是一款基于OpenGL ES 1.1的开源Android游戏开发引擎,由Nicolas Gramlich开发并维护。它为开发者提供了一个高效、简洁的游戏开发框架,大大简化了2D游戏的...
在Android游戏开发领域,AndEngine是一个非常受欢迎的2D游戏引擎,它提供了高效且易于使用的API,使得开发者能够快速构建高质量的游戏应用。本教程将详细阐述如何在Android Studio中配置AndEngine开发环境,并且集成...
AndEngine的核心设计理念是低耦合和高内聚,它将游戏引擎的各个模块拆分成独立的部分,便于管理和维护。AndEngine主要利用OpenGLES进行图形渲染,确保游戏画面的质量。它采用了双线程模型,分别负责绘图和游戏逻辑...
这个最新的AndEngine游戏引擎源码包,对于任何致力于Android游戏开发的人来说,都是一份极其宝贵的学习资料和开发工具。 AndEngine的核心优势在于其简洁的API设计,使得开发者能够快速地构建2D游戏,而无需深入了解...
学习AndEngine不仅可以提升你的Android游戏开发技能,还能为转战其他游戏引擎打下坚实的基础。在源码阅读过程中,你会遇到如内存管理、线程同步、图形优化等通用的编程概念,这些都是任何游戏开发者都需要掌握的核心...
AndEngine是一款专为Android平台设计的2D游戏开发引擎,凭借其高效性能和易用性,在开发者社区中广受欢迎。这款引擎是基于OpenGL ES 2.0构建的,旨在为开发者提供一个轻量级的解决方案,用于快速创建高质量的2D游戏...
一个基于OpenGL的Android游戏引擎通常包含以下几个核心组件: 1. **场景管理器**:负责组织游戏中的不同场景,如主菜单、游戏关卡等。 2. **时间管理**:处理游戏的帧率控制和定时事件。 3. **资源管理**:加载和...
文档“Android游戏引擎AndEngine的常用模块介绍.docx”将详细讲解这些模块的使用方法和实例,帮助开发者深入理解AndEngine的各个组件和功能。通过学习AndEngine,开发者可以快速构建各种2D游戏,从简单的休闲游戏到...
综上所述,本源码提供了从基础的游戏元素创建到复杂的游戏逻辑实现的全面示例,对于提升Android游戏开发技能,尤其是AndEngine的使用技巧,具有很高的学习价值。通过研究这个项目,开发者不仅可以了解AndEngine的...
AndEngine是一款流行的开源Android游戏开发引擎,它简化了2D游戏的开发流程,让开发者能够更专注于游戏的设计和实现,而非底层的技术细节。 在《DeliveryBoy》这个示例中,你可以了解到以下关键知识点: 1. **...
Android游戏开发是一个广阔而充满挑战的领域,其中AndEngine和LibGDX是两个非常流行的开源游戏引擎,它们为开发者提供了创建高性能2D和3D游戏的工具。本资源合集包含基于这两个引擎的多个游戏源码,对于学习Android...
AndEngine是一款开源的2D游戏开发引擎,专为Android平台设计。它简化了在Android设备上构建高质量2D...通过实践和研究Jumper Game Tutorial,你可以了解到AndEngine的精髓,并以此为基础创作出属于自己的Android游戏。
Andengine是一款开源的游戏开发引擎,专门针对Android平台设计,它为开发者提供了强大的2D游戏开发框架,无需深入...通过不断地实践和参考官方文档及社区资源,你将能够逐步掌握Andengine,开发出自己的Android游戏。
总的来说,AndEngine提供了一套完整的2D游戏开发解决方案,通过理解和熟练运用这些知识点,开发者可以快速构建出高质量的Android游戏。记得持续关注AndEngine的更新和社区动态,以便获取最新的特性和最佳实践。