首页 > 代码库 > Libgdx框架和主要方法(总有一天你会回头看!)

Libgdx框架和主要方法(总有一天你会回头看!)


既然是学新的游戏引擎,那么首先要对它的框架有所了解,所谓知己知彼,百战不殆嘛!或许,刚开始看完之后你没有任何感受,但是,相信我,总有一天,你会回来再看一遍的!

一、应用的生命周期

    游戏应该高效和稳定,特别是对于android平台。目前的开发都是面向手机和平板。如果有效的管理资源,如何高效的运行都是非常重要的。试想一个制作优美,可玩性高的游戏运行于你的android手机上却10秒钟崩溃一次,运行时卡的如同在看漫画,我只能说,孩子,别糟蹋手游了!哈哈

下面是基本生命周期:

图片分享:

application_lifecycle_diagram


二、.游戏构架

这个框架,是我借鉴别人的,觉得挺有道理,就拿来用下。

一个应用划分下来,就大致为如下结构:

输入指的是用户的响应,可以使点击(Touch)或者点击(Click),拖拽(Drag)等。

输出一般是图片和声音或者影像或者是一些效果,当然也有文件或者其他数据(比如网络的存储)。

而在输入中的文件一般为图片和声音,逻辑由数学逻辑和物理逻辑构成。

Libgdx对于物理上处理是Box2D的封装,可以满足一般需求了。对于数学的封装了一些常见的结构和少量算式,不过可以基于此开发自己需要的算法。

libgdx对于图像和声音等文件的处理比较好,可以直接使用。

架构

三、主要方法(重要)

这些方法 由在应用声明周期中的事件触发,描述如下:

方法名

描述

create ()

当应用程序创建时,此方法被调用一次

resize(int width, int height)

 每次游戏屏幕重置尺寸并且不是暂停状态得时候调用此方法。在create()后调用一次

参数是屏幕被重置后的新宽度和高度

render ()

每次渲染发生时游戏循环调用此方法。游戏更新发生在绘制之前。意思就是说先处理逻辑,在处理绘制。

pause ()

在应用destroyed前调用此方法。在android中档Home键按下或者由重新进入程序时调用此方法。在桌面应用中,退出应用时在dispose() 之间调用

这是一个保存游戏状态的好地方,在android中resume ()不一定会被调用。

resume ()

这个方法仅在android中调用, 当应用获得焦点时. 桌面应用中将不会调用此方法。

dispose ()

 当应用destroyed时,调用此方法,在pause()之后。注意:此方法不会主动调用,必须手动调用!其中AssetManager,BitmapFont,BitmapFontCache,CameraGroupStrategy,DecalBatch,ETC1.ETC1Data,FrameBuffer,Gdx2DPixmap,IndexArray,IndexBufferObject,IndexBufferObjectSubData,MD5Renderer,Mesh,ParticleEffect,ParticleEffectPool.PooledEffect,Pixmap,PixmapPacker,ShaderProgram,SimpleTileAtlas,Skin,SpriteBatch,SpriteCache,Stage,Texture,TextureAtlas,TileAtlas,TileMapRenderer,VertexArray,VertexBufferObject,VertexBufferObjectSubData,World都是需要手动回收的,因此一定不要忘记手动回收,Android设备的内存十分有限!(一些常用的我用绿色标注了!)

Android一般不用管resize(),我们在create中实例化所需的对象,在render()中进行绘制。pause()时可以保持当前的灵活数据。dispose()销毁对象。而在resume()中根据保持的数据对游戏进行还原。其实说不负责一点,dispose()你可以不管,android系统会自动回收一些,用户对于退出后的短暂停滞也是有接受能力的。create()你也可以水一些,大不了进入游戏或者初始化相关场景时速度慢一些罢了。但是pause()和resume()你必须认真处理。电话是最常见的意外性中断,不会有用户偏爱一个电话就可以让记录或者进度消失的游戏的。



Libgdx框架和主要方法(总有一天你会回头看!)