android游戏开发框架libgdx的使用(二十)—资源预加载与AssetManager的使用

转自:http://www.apkbus.com/forum.php?mod=viewthread&tid=44515&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline

好久没有写libgdx相关的东西了,主要是我不知道改写些什么了。

最近收到了很多邮件,大多是关于资源加载的,特别是异步资源加载,还有什么Loading窗口的实现什么的,这篇博文就做个大致的回答吧。

什么时候需要资源预加载

资源预加载的目的很明确,提升用户体验。当然就开发者而言,比较好的预加载实现方式还可以方便管理。

如果游戏很简单简单,资源很少很少,那么弄资源预加载就是费事,但是以下几种情况的话还是推荐使用:

1.资源数量大

音乐、图片、视频什么的,如果你的游戏这些东西太多,推荐使用

2.部分资源反复使用

有些资源会反复使用到,比如一些背景音乐,一些小图标

Libgdx中的AssetManager

AssetManager是libgdx提供的资源加载方案,demo中有个例子,详细的可以细致参考。


AssetManager使用很简单,先实例化一个。

  1. AssetManager assetManager = new AssetManager();
复制代码

加载资源时需要制定资源位置和资源类型,目前支持Pixmaps、Textures、BitmapFonts、TextureAtlases、TiledAtlases、TileMapRenderers、Music、Sound这些类型的资源。

使用方法:

  1. assetManager.load("data/img/bg.png", Texture.class);

  2. assetManager.load("data/font/chinese.fnt", BitmapFont.class);

  3. assetManager.load("data/music/op_head.ogg", Music.class);

  4. assetManager.load("data/pack/task1.pack", TextureAtlases.class);
复制代码
加载的时候还支持自定义参数,比如加载Texture时
  1. TextureParameter textureParameter = new TextureParameter();

  2. textureParameter.minFilter = TextureFilter.Linear;

  3. textureParameter.genMipMaps = true;

  4. manager.load("data/img/bg.png", Texture.class, textureParameter);
复制代码

大多数情况还是不用考虑自定义参数的。


执行了Load方法其实只是将预加载的资源载入了队列,实质上并没有加载什么,使用Update方法才会加载资源。

该方法有个返回值,当其为True时即加载完成,为False就表示还在加载。

如果需要一个比较准确的返回,比如当前加载到百分之多少了以方便绘制进度条,可以使用getProgress方法,该方法返回一个0到1之间的数字。

获取资源时候使用assetManager.get(位置,类型)即可,比如

  1. assetManager.get("data/img/bg.png", Texture.class);

  2. assetManager.get("data/font/chinese.fnt", BitmapFont.class);
复制代码
如果有需要也可以先检查一下
  1. assetManager.isLoaded("data/img/bg.png")
复制代码
使用时的一些注意事项

如果要取消预加载的话,调用finishLoading方法。

如果要销毁使用完的资源的话,调用unload方法。

还有一个比较重大的问题就是游戏被打断以后,部分资源需要重新加载,不然的话会出现无数报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值