用libgdx时的常见问题一览

前阵子为交作业用libgdx写了个泡泡龙,遇到不少令人费解的问题,虽然不顺利,但好歹基本的东西都弄出来了。以后不出意外大概不怎么会再碰Android的东西,在彻底淡忘之前,我勤奋点把用libgdx过程中碰到的一些麻烦问题记一下。

效率来说,libgdx应该算是个不错的引擎,音频图像部分都用JNI加速过了,提供的库也挺丰富的,开发的时候比较有选择的余地。遗憾的是选择较多的同时,也让人感到这个引擎的复杂,另外,虽然该引擎的文档一直在改进,但目前仍然十分不完善,提供的示例也只展示了一部分库的用法,而如果像使用那些没有介绍到的部分,开发者就相当窘迫了,还有——更需一提的是,这引擎的中文资料实在是少得可怜,中文搜索出来的虽然一堆,但看来看去都是那几篇。

我简单的把问题罗列一下好了:

1、加载图片问题

这是个很令人费解的问题,虽然libgdx支持多种图片格式,但我自己通过ps制作的jpg总是无法加载成功(长宽都是按照规格来的)。起初以为是色彩模式、位数之类的问题,改来改去也还是不能用,但拿官方示例(那个hello world示例)加载的时候就没问题。我用ps打开示例用的图片,也看不出和我自己做的图有哪里区别。但好在用png就没这种问题,所以素材还是推荐用png。还有一个问题也让人十分困扰,初次把素材复制进项目(assets文件夹里)时,偶尔也会出现加载失败,但再复制一次问题就解决了,原因我还是没搞清楚。

2、调试问题

因为游戏很多地方都是在和图片音乐打交道,而这部分用的又是JNI,所以调试起来需要些技巧。这对于已经比较有调试经验的人来说可能没什么,但对于新手来说还是比较痛苦的,看不懂是为什么出错。出错原因并没有被写进Android log。但怎么解决这个问题也不好说,总之先提醒一下吧,调试经验自己去总结。

3、多分辨率问题

因为现在图形引擎都有多缓冲机制,所以我一开始的想法是直接把后置缓冲放大(缩小)投影到屏幕上,这样就只要设定一个标定分辨率,素材都以标定分辨率的大小来张贴就行了。但我找不到这个引擎哪里可以提供类似的功能。另外,因为触屏输入的关系,触屏位置也需要通过投影来进行计算,这部分我也不知道可以怎样来实现(我对OpenGL不熟)。后来在国外论坛上找到的方案是,取得设备的分辨率,拿来和标定分辨率相除得到比例,再把需要转换的内容都乘以这个比例(我建立了一个T类来实现)。最后虽然做到了自适应分辨率,但总觉得不理想,这么做比较繁琐。

4、场景管理

一开始我找到的资料是介绍以Stage+Actor来做游戏交互的,所以写自己的游戏的时候也一直用这个。但到后期想要做游戏开场和结束场景的时候就觉得完全失控了,Stage+Actor的方式并不适合直接拿来用,理想情况下应该在外面覆盖一层场景类来包装才行,这样才能自如换场。后来我去demo里面找找到了几个例子就是这么做的,但奇怪的是,虽然libgdx提供了Scene类,但那些demo又自己实现了一个,令人十分费解。

5、消息机制

游戏的交互通常都比较复杂,所以我觉得没有一个合理的消息机制支撑是不行的,否则类间耦合程度太厉害。但libgdx上也没找到这样的东西(也可能是自己没发现),自己实现终归是个麻烦事儿。如果没有消息机制的话,作为游戏引擎来说是挺大的缺陷。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_72431373

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值