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



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

一、应用的生命周期

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

下面是基本生命周期:

图片分享:

二、.游戏构架

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

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

输入指的是用户的响应,可以使点击(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()你必须认真处理。电话是最常见的意外性中断,不会有用户偏爱一个电话就可以让记录或者进度消失的游戏的。

时间: 2024-09-28 18:06:32

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

一种智能卡封装框架的电镀方法

一种智能卡封装框架的电镀方法,属于电子信息技术领域.其特征在于:本发明将成型框架进行前处理之后,再在框架接触层电镀1.8~2.2μm厚的镍层,再在镍层的基础上电镀0.4~0.8μm的磷镍合金层,之后再在框架接触面的磷镍合金层外电镀0.009~0.05μm厚的金层.本发明提高了产品接触表面的耐磨性和抗腐蚀性.本发明可以减少硬金的厚度,并取消后处理的使用,大大节约成本. 1.一种智能卡封装框架的电镀方法,其特征在于,接触层电镀工艺步骤为: 1.1.前处理:对成型框架的铜面进行表面清洗,除去铜面上的油

iOS端JSON转Model链式编程框架SuperKVC使用方法与原理

背景 在client编程中.字典转模型是一个极为常见的问题,苹果提供了KVC来实现NSDictionary到Model的注入,可是KVC仅仅能进行单层浅注入.且无法处理类型转换.key与属性名不正确应.深度注入等问题,笔者从Masonry得到启示,开发了一个通过链式配置注入器实现深度注入.类型转换.key-属性名映射等功能的轻量级注入框架SuperKVC.眼下已经开源到GitHub,点击这里前往.欢迎Star和Fork.欢迎和我一起完好这个框架! 本文将从应用和原理两个角度介绍SuperKVC

异构云操作系统的集成与统一调度框架及调度方法

本发明公开的异构云操作系统的集成与统一调度框架,包括有资源收集模块.用户认证模块.统一调度模块及请求转化模块,资源收集模块.用户认证模块分别通过导线与统一调度模块连接,统一调度模块通过导线与请求转化模块连接,资源收集模块.请求转化模块分别通过导线与Elaster云操作系统.CloudStack操作系统及OpenStack操作系统连接.本发明还公开了上述集成与统一调度框架的调度方法.本发明的异构云操作系统的集成与统一调度框架解决了异构云操作之间资源无法共享,实现了对异构云操作系统的统一调度. 技术

tornado框架的get方法传递参数

tornado框架的get方法传递参数,代码: # encoding: utf-8 """ @version: ?? @author: andu99 @contact: [email protected] @site: http://www.cnblogs.com/andu99/ @software: PyCharm @file: main.py @time: 2018/5/9 0009 上午 11:05 """ from tornado.iol

express 框架的使用方法

express  框架的使用方法: 第一步: 生成一个 (express)项目工程 命令提示框的指令是: express    (文件名) express    -e      (文件名) 两段指令的效果都是   生成一个 (express)项目工程 区别 在于: 以上图片是 express -e   生成的视图文件以及文件夹的内容 以上图片是 express 生成的文件以及文件夹的内容, 介绍以下 文件夹的作用以及 个别生成指令: 作用: bin     启动文件 public     静态文

SubSonic2.2框架的使用方法和配置说明

网上.net ORM框架也不少,但是我感觉这个框架配置很简单的,前几年貌似用的人很多,现在好像用得比较少了,随着它官方的升级现在已经到3.0了, 并且采用T4 模板生成的方式,代码量好像减少了.不过我感觉2.2还是比较稳定,前些天有网友问这个框架怎么使用,在次让我整理了一下.废话就不说了,先看看怎么配置使用吧 步骤一 配置web.config: 在configSections节点上先加入SubSonic声明代码如下: <configSections> <section name=&quo

跨应用使用Spoon框架截图的方法

spoon框架是一个很棒的用例驱动跟测试结果生成加工的框架.但在使用spoon-client时,传入参数需要被测应用的activity实例,跨应用测试会很受限(当然也可能是因为我对android不熟导致的,在使用uiautomator2时,我只能拿到被测应用的activity名,但没办法拿到实例).这里提供一种解决办法,就是直接修改spoon框架的源码,仅供参考. 通过阅读spoon框架源码可以发现,spoon-client提供screenshot的api来截图,截图后会保存在包名路径下,而sp

TP框架ajax U方法不解析怎么办?

TP框架中ajax U方法不解析 ajax U方法不解析 ajax url不解析 问题: 造成问题原因: Js 存在 单独的 js文件中和html分离了.造成不解析! 解决方法: 方法一:将js放到html中 方法二:隐藏域的方式 完美!

android框架Java API接口总注释/**@hide*/和internal API

Android有两种类型的API是不能经由SDK访问的 l 第一种是位于com.android.internal包中的API我,位于frameworks/base/core/java/com/android/internal/.我将称之为internal API. l 第二种API类型是一系列被标记为@hide属性的类和方法.从严格意义上来讲,这不是一个单一的API和类,而是一些的被隐藏的API和类,称之为hidden API Internal和hidden API的区别 Hidden API之