#Testin杯#Mkey libgdx游戏引擎教程(一) 性能优良的游戏引擎—libgdx

404
回复
3533595
查看
  [复制链接]

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

精华 发表于 2012-7-2 23:13:24 | 显示全部楼层 |阅读模式
本帖最后由 耒佲請ぁ留埗 于 2012-8-18 12:59 编辑


    今天是#Testin杯#Mkey libgdx教程的第一讲,今天的内容非常浅显,主要以介绍性内容为主,明天将会更新2-3讲,将libgdx快速推进,希望大家能够支持!

新浪微博:http://weibo.com/u/1634658054

以下系列教程按讲课顺序排列,也是推荐阅读的顺序

第一讲:libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx http://www.apkbus.com/android-57355-1-1.html

第二讲: libgdx游戏引擎教程(二) ApplicationListener,着手第一个程序http://www.apkbus.com/android-57372-1-1.html

第三讲:libgdx游戏引擎教程()libgdx粒子系统的使用 http://www.apkbus.com/android-57456-1-1.html

外篇一:libgdx游戏引擎教程外篇(一)优美的自定义进度条(附源码) http://www.apkbus.com/android-57523-1-1.html

第四讲:libgdx游戏引擎教程(四) 游戏正式开始,资源异步加载(附源码)http://www.apkbus.com/android-57716-1-1.html

第五讲 libgdx游戏引擎教程(五)多游戏界面的实现(一)附源码 http://www.apkbus.com/android-57936-1-1.html

第六讲 libgdx游戏引擎教程(六)多游戏界面的实现(二)附源码 http://www.apkbus.com/android-57991-1-1.html  

第七讲 libgdx游戏引擎教程(七) 在libgdx中拦截Android按键事件 http://www.apkbus.com/android-58030-1-1.html  

外篇二: libgdx游戏引擎教程外篇(二)libgdx移植俄罗斯方块(附源码) http://www.apkbus.com/android-58102-1-1.html   

实战一:libgdx游戏引擎教程实战篇(一)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58404-1-1.html  

实战二:libgdx游戏引擎教程实战篇(二)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58408-1-1.html  

实战三:libgdx游戏引擎教程实战篇(三)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58414-1-1.html  

实战四:libgdx游戏引擎教程实战篇(四)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58418-1-1.html  

实战五:libgdx游戏引擎教程实战篇(五)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58419-1-1.html

实战六:libgdx游戏引擎教程实战篇(六)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58760-1-1.html

第八讲 libgdx游戏引擎教程(八) libgdx中的用户手势识别(一)附源码 http://www.apkbus.com/android-58933-1-1.html

第九讲 libgdx游戏引擎教程(九) libgdx中的用户手势识别(二)附源码 http://www.apkbus.com/android-59152-1-1.html

外篇三: libgdx游戏引擎教程外篇(三) 优美的自定义对话框(附源码) http://www.apkbus.com/android-59654-1-1.html  

第十讲:  libgdx游戏引擎教程(十)演员类的复杂动画(一)(附源码) http://www.apkbus.com/android-59998-1-2.html

第十一讲:libgdx游戏引擎教程(十一)演员类的复杂动画(二)(附源码) http://www.apkbus.com/android-60053-1-1.html

第十二讲:libgdx游戏引擎教程(十二)演员类的复杂动画(三)(附源码) http://www.apkbus.com/android-60194-1-1.html   

第十三讲: libgdx游戏引擎教程(十三)演员类的用户交互功能详解(附源码)  http://www.apkbus.com/android-60457-1-1.html

第十四讲:libgdx游戏引擎教程(十四)libgdx中常用的控件(附源码) http://www.apkbus.com/android-60569-1-1.html

最新更新 第十五讲 :libgdx游戏引擎教程(十五)在Libgdx中仿微信帮助滑动效果(附源码) http://www.apkbus.com/android-60822-1-1.html

只要是对于想在Android平台上通过编写应用来赚取第一桶金的人来说,首先考虑编写的都是游戏。然而对于使用google提供的API,单纯用API并适当的根据自己的需要来重写控件编出一些很优美的应用应该是没有什么问题,但如果需要编写一个性能优良的游戏来说可能就有一些难度了。


       因此我们可以借助一些游戏引擎来帮助我们实现这个目标。目前比较好比较成熟的商业游戏引擎当属Unity 3.X,当下ios平台甚至是Android平台有很大一部分杀手级应用都是用它做出来的,而且Unity有一个非常不错的优点,不仅是可视化的,它还支持直接导出不同平台上的app包,包括android和ios。也就是说,同样的代码开发者只需要做很少量的代码修改就可以同时支持多个平台,这对于商业应用的快速开发和移植是极其重要的。不过由于是商业引擎的缘故,授权费用不菲,一般的开发者并没有必要使用它来开发游戏。


          当然我们还有一些免费的性能不输于商业游戏引擎的开源游戏引擎。比较常用的有andengine,cocos2d,还有我接下来要介绍的Libgdx引擎,我将在接下来的一段时间里更新一系列有关Libgdx游戏开发的文章,希望大家多多支持。


         libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。ibgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows等系统,最近加入了对html5的支持)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥)。Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,可以支持png、jpg、bmp,最近的两个版本中加入了对gif图片的支持(如果要做大量动画的话,gif图片可以保证在图片质量降低不了太多的情况下成倍地缩小,这点大家都懂的)。



        对于libgdx平台的搭建就不过多的赘述了,大家可以参看 安卓巴士里另一个帖子http://www.apkbus.com/android-19745-1-1.html ,里面一些部分讲的还是很详细的,可以帮助大家快速入门。至于本系列的教程则定位为帮助大家在入门的基础上进一步实际操作,并且分享一些我曾经遇到过的问题,避免大家再在这些问题上纠缠浪费了宝贵的时间。


           大家可以去http://code.google.com/p/libgdx/下载最新的libgdx。这里还要提示一下大家,libgdx分为 latest releases和nightlies两种,前者是正式发布的版本,后者则是随时修正随时更新的版本,建议没有什么特别需要的话,最好使用lastest release的版本,避免遇见一些很奇怪的问题,我使用的是最新的0.9.4的版本,其中加入了很多新的内容(包括3D),效率相对于老版本也有很明显的提高,最好不要使用0.9.2的版本,因为0.9.4版本修改了一部分接口,我曾经在把自己的游戏的libgdx的版本从0.9.2更新到0.9.4的时候花了一部分时间重新修改代码,因为原来的接口和函数已经被废弃了…


           第一篇文章主要是介绍性的内容,为了使大家先了解一些,这里就先贴出一个最简单的demo供大家学习(前提是你已经搭建好了Libgdx环境才可以哦)。这里顺便说一句,开发Android平台的游戏,只需:

  • armeabi/
  • armeabi-v7a/
  • gdx-backend-android.jar
  • gdx.jar


这四个文件就可以了,具体的使用方法可以http://www.apkbus.com/android-19745-1-1.htm


我们先写一个类
  1. public class MyGame implements ApplicationListener {
  2.         public void create () {
  3.                 // STUB
  4.         }

  5.         public void render () {
  6.                 // STUB
  7.         }

  8.         public void resize (int width, int height) {
  9.                 // STUB
  10.         }

  11.         public void pause () {
  12.                 // STUB
  13.         }

  14.         public void resume () {
  15.                 // STUB
  16.         }

  17.         public void dispose () {
  18.                 // STUB
  19.         }
  20. }
复制代码

          ApplicationListener是一个接口,我们很容易可以看出,实现了这个接口的类都有一个共同的特点,它们都会经历一个创建,渲染(render),暂停,继续,销毁等一系列过程,发生对应时间的时候会自用调用相应的函数。特别是render()函数,它是一个系统在不停调用的函数(当然这个实例满足正在运行的条件),因此我们可以把很多操作放在render()函数中实现,不过千万注意不要进行耗时的操作以免堵塞UI线程。


    下面我们就要启动一个Libgdx游戏了!另外写一个类
  1. public  class LibgdxActivity extends  AndroidApplication {   
  2.     @Override
  3.     public void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         initialize(new MyGame(), false);
  6.     }
  7. }
复制代码
               这就完成了第一个libgdx程序的编写!当然源码中需要加入各种import xxxx,这里就不添加了,另外会把源码附上,可以供大家下载。

          查询官方文档,可以看到
java.lang.Object
| Activity
|com.badlogic.gdx.backends.android.AndroidApplication
这意味着什么呢??也就是说,AndroidApplication继承自API中的Activity,因此我们使用它也需要在Manifest中注册,这里就不再具体说明如何注册了,大家应该都是知道的吧!另外,这里也提供了一个更好的问题供大家思考,既然AndroidApplication继承自Activity,那么是不是可以像其他Activity一样使用Intent进行跳转呢?答案是肯定的,不过事情也并没有这么简单,我将在后面的文章里面重点讨论这个问题。


           至于initialize(new  MyGame (), false);这一条语句,这里解释一下,这是启动libgdx的一个必备的条件,不执行该语句libgdx就无法启动,第一个参数是一个实现了ApplicationApplication接口的类的实例,第二个参数如果设为true,则在opengl 2.0可用的情况下会使用opengl 2.0。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
君见一叶舟,出没风波里

0

主题

4

帖子

1

安币

初级码农

Rank: 1

发表于 2014-11-1 08:11:59 | 显示全部楼层
好像最新版的libgdx的initialize方法已经没有第二个参数为Boolean类型的了吧?

2826

主题

7684

帖子

9600

安币

管理员

Rank: 9Rank: 9Rank: 9

QQ达人最佳新人活跃会员热心会员推广达人灌水之王突出贡献

QQ
发表于 2012-7-2 23:19:29 | 显示全部楼层
{:soso_e179:} 不错哈,期待系列教程!!!!

66

主题

798

帖子

1万

安币

码皇(巴士元老)

霸王

Rank: 8Rank: 8

QQ达人

QQ
发表于 2012-7-3 07:09:39 | 显示全部楼层
{:Nose:}都这么强悍的啊

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

 楼主| 发表于 2012-7-3 08:39:58 | 显示全部楼层
顶起来~
君见一叶舟,出没风波里

14

主题

170

帖子

825

安币

代码手工艺人

Rank: 4

QQ达人

发表于 2012-7-3 09:32:22 | 显示全部楼层
楼主,你这系列教程在我的版块里也有,“Android应用开源社区”有专门的一个模块,而且都是写好的。

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

 楼主| 发表于 2012-7-3 09:48:56 | 显示全部楼层
执着的启明星 发表于 2012-7-3 09:32
楼主,你这系列教程在我的版块里也有,“Android应用开源社区”有专门的一个模块,而且都是写好的。 ...

额,你看了下一讲就知道了,我写的都是一些在实际编写中容易遇到的问题,或者是网上资料讲的不够清楚的,我做一个详细的解释,不然我再写这个有什么意义呢?那岂不是抄袭么?
君见一叶舟,出没风波里

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

 楼主| 发表于 2012-7-3 09:54:59 | 显示全部楼层
执着的启明星 发表于 2012-7-3 09:32
楼主,你这系列教程在我的版块里也有,“Android应用开源社区”有专门的一个模块,而且都是写好的。 ...

我看了一下你说的那些文章,最初的出处是博客园的 黄云坤 的博客,我正是心觉那个写的不够详细才萌生写此教程之意,请多多支持哦
君见一叶舟,出没风波里

9

主题

72

帖子

109

安币

程序猿

Rank: 2

发表于 2012-7-3 10:20:18 | 显示全部楼层
学习~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )