今天学习了 Andriod 的专用 2D 游戏引擎 AndEngine ,对于该引擎有了一个初步了解,对于 AndEngine 编程跃跃欲试。不过,应该对这次的学习做个学习笔记或者说总结,权当心得。
首先这份资料介绍了 AndEngine 运行的基本原理和基本流程, AndEngine 是专供 Android 使用的 2D 游戏引擎,所以作为启动类的 Activity 肯定必不可少,所以它继承了 BaseGameActivity 。 在 Activity 中的被重载函数的启动顺序为 onLoadEngine -> onLoadResources -> onLoadScene -> onLoadComplete 。 具体的讲, AndEngine 会首先加载 Engine 类实例通知系统游戏引擎的基本运行方式,而后加载游戏资源,其次加载游戏场景实例,最后通过 onLoadComplete 通知用户加载完毕并于此进行善后工作.
其次,这份资料介绍了函数加载资源是( onLoadResources )时的 Async 方法,当项目一次性加载大量资源时,为了防止 Andriod 系统无法响应,异步加载显得异常重要。 AndEngine 引擎提供了异步加载机制,我们可以通过使用 doAsync 或 doProgressAsync 函数就可以实现异步加载机制 .
然后这份资料介绍了游戏引擎必须实现的组件:精灵类。精灵类一般用来表示游戏中的某个角色或者特定的画面要素。当然,我们还需要利用精灵类来实现游戏中绚丽的画面和动作效果,在 AndEngine 中主要是通过其中的 Modifier 类实现。 我们可以在 onLoadScene 中可以创建精灵类,注册动作序列到精灵类实例中。
最后,我们要特别注意 Texture 的使用。资料指出:“ Texture 是 AndEngine 所提供的纹理用类,但 Texture 本身(在 AndEngine 中)并没有提供加载图片的方法,必须通过 TextureRegionFactory 类(更准确的说,依赖它内部封装的 TextureRegion 、 BuildableTexture 等类)与之合作才可以加载纹理。除此之外, AndEngine 要求所加载纹理(图片)大小必须为 2 的整数次幂。 ”我们特别要注意 Texture 和 TextureRegionFactory 类的结合使用,同时,加载的图片大小必须为 2 的整数次幂。
单就 TextureRegion 来讲,它的作用似乎就是让系统知道如何剪切一个纹理,并返回一个这样的纹理给你。 AndEngine 中的 Texture 有很多功能必须靠 TextureRegion 最终完成,比如 AndEngine 中的 Sprite 必须加载 TextureRegion 才能使用 Texture ,而不是直接调用 Texture 。应该说, AndEngine 中见 Texture 几乎必见 TextureRegion ,二者无法分离,缺一不可 。
在 AndEngine 中, TextureRegionFactory 类决定纹理的加载路径, Texture 类作为承载纹理的实体对象,而 TextureOptions 类决定了纹理的渲染方式。 在选择 TextureOptions 类提供的默认方式时,我们需要考虑均衡画质和显示速度,