Android游戲引擎libgdx使用教程1:搭建libgdx環(huán)境
libgdx是一個(gè)跨平臺的2D/3D的游戲開發(fā)框架,它基于Apache License, Version 2.0協(xié)議,由Java/C/C++語言編寫而成,其代碼托管于Google Code中,對商業(yè)使用和非商業(yè)使用均免費(fèi)。
開源的游戲框架并不少見,但是libgdx的優(yōu)勢是相當(dāng)明顯的,主要是體現(xiàn)在以下幾個(gè)方面:
1、極強(qiáng)的兼容性
libgdx兼容大多數(shù)微機(jī)平臺(標(biāo)準(zhǔn)JavaSE實(shí)現(xiàn),能運(yùn)行在Mac、Linux、Windows等系統(tǒng))與Android平臺(Android1.5以上即可使用,Android2.1以上可滿功率發(fā)揮)。
2、高效性
Libgdx主要是用Java寫的,其中也參雜了一些C/C++代碼,這些代碼是為了處理一些對性能要求很高的操作,比如物理引擎或者音頻處理。作為用 戶,你只需要關(guān)注Java端就可以了,它已經(jīng)把所有的本地代碼封裝好了。相比于其他android游戲引擎,libgdx的效率優(yōu)勢十分明顯。
另外,libgdx還具備架構(gòu)清晰,物理引擎(Box2D)的封裝,擁有豐富的工具等特點(diǎn)。
libgdx的logo:
libgdx的下載地址:http://code.google.com/p/libgdx/。
首先下載最新的jar,我下載的是libgdx-0.9.2。
新建一個(gè)Android項(xiàng)目,F(xiàn)ile -> New -> Project -> Android Project。我選的SDK是1.6的,最低選擇應(yīng)該是1.5。
新建一個(gè)文件夾libs(這個(gè)名字是固定的,不能隨意改),將下載到的jar復(fù)制進(jìn)去,android平臺只需要復(fù)制gdx.jar和gdx-backend-android.jar。
增加引用,然后將armeabi和armeabi-v7a兩個(gè)文件夾復(fù)制到libs文件夾中。
然后寫個(gè)小程序測試一下環(huán)境有沒有問題。
新建類HelloGameActivity,繼承AndroidApplication類。
- package com.cnblogs.htynkn;
- import com.badlogic.gdx.backends.android.AndroidApplication;
- import android.os.Bundle;
- public class HelloGameActivity extends AndroidApplication {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- initialize(new FirstGame(), false);
- }
- }
initialize(new FirstGame(), false);就是啟動(dòng)游戲的關(guān)鍵,F(xiàn)irstGame是一個(gè)實(shí)現(xiàn)了ApplicationListener的類。代碼如下:
- package com.cnblogs.htynkn;
- import com.badlogic.gdx.ApplicationListener;
- import com.badlogic.gdx.Gdx;
- import com.badlogic.gdx.graphics.GL10;
- import com.badlogic.gdx.graphics.g2d.SpriteBatch;
- public class FirstGame implements ApplicationListener {
- //繪圖用的SpriteBatch
- private SpriteBatch batch;
- @Override
- public void create() {
- batch = new SpriteBatch(); //實(shí)例化
- }
- @Override
- public void dispose() {
- // TODO Auto-generated method stub
- }
- @Override
- public void pause() {
- // TODO Auto-generated method stub
- }
- @Override
- public void render() {
- Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); //清屏
- batch.begin();
- batch.end();
- }
- @Override
- public void resize(int width, int height) {
- // TODO Auto-generated method stub
- }
- @Override
- public void resume() {
- // TODO Auto-generated method stub
- }
- }
因?yàn)闆]有寫實(shí)際的東西,所以效果是一個(gè)黑黑的框。
libgdx環(huán)境搭建就說到這里。
注意:如果仔細(xì)觀察Logcat, 就會發(fā)現(xiàn)一個(gè)error:E/libEGL(382): couldn't load <libhgl.so> library (Cannot load library: load_library[984]: Library 'libhgl.so' not found)。
這個(gè)沒什么關(guān)系,這是系統(tǒng)嘗試加載硬件OpenGL驅(qū)動(dòng)失敗了,然后回到軟件的處理方法上,不是缺陷或者錯(cuò)誤。