Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android游戲 >> Android游戲開發 >> Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

編輯:Android游戲開發

       libgdx絕對是一個相當不錯的游戲引擎,最近一段時間的學習我感覺收獲很多。但是我一直對於libgdx加載的圖片大小必須是2的次方感到很糾結。

       如果是一張一般的圖片想在libgdx中使用的話就需要自己去用ps什麼的把圖像拉一下,一兩張沒關系,但是數量大了還是有點煩。

       而且拉大的圖片還需要TextureRegion來切割一下,實在麻煩。仔細看了一下libgdx的tool包,發現早有解決方案了。

       具體的類是imagepacker,在com.badlogic.gdx.tools.imagepacker包之中。它可以將多張圖片合並在一張之中。同時可以通過原有文件的文件名獲得圖片資源。

       這裡有幾張圖片:

 Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

       將它們放在一個文件夾中(這個文件夾沒有其他東西了)。引用gdx-tool.jar。

       代碼如下:

XML/HTML代碼
  1. Settings settings = new Settings();   
  2. settings.alias = true;   
  3. TexturePacker.process(settings, "D:\\img", "D:\\img\\output");  

      在output文件夾中可以找到兩個文件,其中一個是合成好的圖片

 Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

       另外一個名為pack,其中記錄了源文件的位置,大小和名稱。

       將圖片和pack文件拷貝到項目目錄。這裡說明一下,pack文件的文件名可以隨便改,合成的圖片如果需要改名的話就需要改一下pack文件裡面的內容了。

       使用時的具體類是TextureAtlas。

       代碼:

Java代碼
  1. package com.cnblogs.htynkn.game;  
  2.   
  3. import com.badlogic.gdx.ApplicationListener;   
  4. import com.badlogic.gdx.Gdx;   
  5. import com.badlogic.gdx.graphics.GL10;   
  6. import com.badlogic.gdx.graphics.g2d.TextureAtlas;   
  7. import com.badlogic.gdx.scenes.scene2d.Stage;   
  8. import com.badlogic.gdx.scenes.scene2d.ui.Image;  
  9.   
  10. public class TexturePackerDemo implements ApplicationListener {  
  11.   
  12.     Stage stage;   
  13.       
  14.     @Override   
  15.     public void create() {   
  16.         stage=new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);   
  17.         TextureAtlas atlas=new TextureAtlas(Gdx.files.internal("imgs/pack")); //根據pack文件獲取所有圖片   
  18.         Image image1=new Image(atlas.findRegion("14")); //獲取名為14的圖片,並創建一個Image對象   
  19.         image1.scaleX=image1.scaleY=0.2f;   
  20.         image1.x=image1.y=0;   
  21.         Image image2=new Image(atlas.findRegion("xpic2766"));   
  22.         image2.x=image2.y=40;   
  23.         image2.scaleX=image2.scaleY=0.5f;   
  24.         stage.addActor(image1);   
  25.         stage.addActor(image2);   
  26.     }  
  27.   
  28.     @Override   
  29.     public void dispose() {   
  30.         stage.dispose();   
  31.     }  
  32.   
  33.     @Override   
  34.     public void pause() {   
  35.         // TODO Auto-generated method stub  
  36.   
  37.     }  
  38.   
  39.     @Override   
  40.     public void render() {   
  41.         Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);   
  42.         stage.act(Gdx.graphics.getDeltaTime());   
  43.         stage.draw();   
  44.     }  
  45.   
  46.     @Override   
  47.     public void resize(int width, int height) {   
  48.         // TODO Auto-generated method stub  
  49.   
  50.     }  
  51.   
  52.     @Override   
  53.     public void resume() {   
  54.         // TODO Auto-generated method stub  
  55.   
  56.     }  
  57.   
  58. }  

       效果:

Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

       寫在最後:

       1.使用TexturePacker的最大好處就是方便,我覺得從根本讓加載圖片大小的問題對開發者透明了。

       2.使用TexturePacker提升了效率,比起一張一張圖片加載,合並圖無疑是個很好的選擇。

       3.使用TexturePacker應該注意不要盲目合並,將在一個場景中使用的圖片合並在一起,其他場景或暫時用不到的圖片合並到其他中去。我個人認為一張圖片的大小不超過1024*1024為佳。

       4.TexturePacker工具用著不怎麼順手。我覺得每次新建一個java項目,然後填寫路徑很麻煩。熱心的網友做了GUI版本的。

Android游戲引擎libgdx使用教程16:使用TexturePacker工具加快開發速度

下載地址:http://www.ctdisk.com/file/4279795

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved