中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android游戲開發十日通(2)-搭建libgdx游戲引擎

發布時間:2020-08-06 13:24:17 來源:網絡 閱讀:468 作者:拳四郎 欄目:開發技術

libgdx簡介

libgdx是一個跨平臺的2D/3D的游戲開發框架,它由Java/C/C++語言編寫而成。它基于Apache License, Version 2.0協議,對商業使用和非商業使用均免費

libgdx兼容Windows、Linux、Max OS X、Java Applet、Javascript/WebGL與Android[4](1.5版本+)平臺。對于Android平臺的支持在Android陣營和相關市場日益擴大的情況下libgdx的使用者越來越多。另外,基于MonoTouch,可以實現IOS兼容。


官方網站:http://libgdx.badlogicgames.com/


搭建開發環境

操作系統:Opensuse12.2  

開始前請確保配置好android開發環境。jdk最好用1.6的,官網說1.7會有bug。


1)下載libgdx-http://libgdx.badlogicgames.com/download.html

選擇Release Builds。

Android游戲開發十日通(2)-搭建libgdx游戲引擎




下載好之后解壓文件,就像這樣:

Android游戲開發十日通(2)-搭建libgdx游戲引擎


2)自動生產開發工程

包中自帶的gdx-setup-ui可以用來自動生成項目工程,免去了繁瑣的初始化配置過程。

終端進入到解壓后的文件夾,運行

java -jar gdx-setup-ui.jar 

利用工具創建工程,參數如下:

Android游戲開發十日通(2)-搭建libgdx游戲引擎


注意左下角要選定Generate the desktop project,方便開發調試。

中間的libGDX要是綠色的才能生成項目,紅色的話點擊文件夾小圖標定位到之前下載好的zip文件。

最后點擊偶下角的Open the generation screen->launch

Android游戲開發十日通(2)-搭建libgdx游戲引擎


在當前文件夾下面會生產三個對應的目錄,如圖:

Android游戲開發十日通(2)-搭建libgdx游戲引擎


3)導入工程

在eclipse中首先導入游戲工程和desktop工程。

File->import

Android游戲開發十日通(2)-搭建libgdx游戲引擎

選中剛才創建好的test-gdx-game文件夾->finish。

同樣的方法導入test-gdx-game-desktop。

接下來導入android工程。

eclipse下面Ctrl+n - >Android project from exiting project->選中test-gdx-game-android->finish.

三個工程導入完成后,還需要修改一些地方。

由于我們創建項目的時候是同時創建了android版本和desktop版本,gamecode 其實都在test-gdx-game中,而資源文件其實都放在了android項目中asset文件夾中。

直接運行desktop項目會報錯,提示找不到資源文件。這里需要在desktop項目中添加一個鏈接。

右擊test-gdx-game-desktop->project -> Properties -> Java Build Path -> Source tab -> Link Source… -> Browse… -> 定位到 test-gdx-game-android project 的assert文件夾,點 Finish。

工程就算建立完成了。

desktop和android都可以直接運行,調用的是test-gdx-game中的代碼。

各自的運行結果如下:

Android游戲開發十日通(2)-搭建libgdx游戲引擎

Android游戲開發十日通(2)-搭建libgdx游戲引擎



項目解析

為了初始化Application必須實現ApplicationListener這個接口, 它用來更新游戲狀態(即邏輯),渲染出項,暫停游戲,保存狀態,釋放資源等。
它也有一個處理Application 聲明周期事件的地方。每個應用,不管后臺平臺版本都必須實現ApplicationListener 接口。所有平臺都會存在并要實現這個接口。

看一下項目代碼:

package com.me.testgdxgame;  import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture.TextureFilter; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion;  public class TestGdxGame implements ApplicationListener { 	private OrthographicCamera camera; 	private SpriteBatch batch; 	private Texture texture; 	private Sprite sprite; 	 	@Override 	public void create() {		 		float w = Gdx.graphics.getWidth(); 		float h = Gdx.graphics.getHeight(); 		 		camera = new OrthographicCamera(1, h/w); 		batch = new SpriteBatch(); 		 		texture = new Texture(Gdx.files.internal("data/libgdx.png")); 		texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 		 		TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275); 		 		sprite = new Sprite(region); 		sprite.setSize(0.9f, 0.9f * sprite.getHeight() / sprite.getWidth()); 		sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); 		sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2); 	}  	@Override 	public void dispose() { 		batch.dispose(); 		texture.dispose(); 	}  	@Override 	public void render() {		 		Gdx.gl.glClearColor(1, 1, 1, 1); 		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 		 		batch.setProjectionMatrix(camera.combined); 		batch.begin(); 		sprite.draw(batch); 		batch.end(); 	}  	@Override 	public void resize(int width, int height) { 	}  	@Override 	public void pause() { 	}  	@Override 	public void resume() { 	} }

生命周期如下:

Android游戲開發十日通(2)-搭建libgdx游戲引擎



幾個重要的方法:

create() : 當應用程序創建時,此方法被調用一次。

resize(int width,int,height): 每次游戲屏幕重置并且不是暫停狀態的時候調用此方法。在create()后調用一次。參數是屏幕被重置后的新狂讀和高度。

render(): 每次渲染發生時游戲循環調用此方法。游戲更新發生在繪制之前。意思就是說先處理邏輯再處理繪制。

pause(): 在應用destroyed()前調用此方法。在android中Home鍵按下或者重新進入程序時調用。這是一個保存游戲狀態的好地方,在android中的resume不一定會調用。

resuem(): 這個方法愛盡在android中調用,當應用獲得焦點時,桌面應用中將不會調用此方法。

dispose(): 當應用destroyed時,調用此方法,在pause()之后。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

咸阳市| 固镇县| 宾阳县| 邮箱| 正宁县| 南木林县| 广河县| 富顺县| 柘荣县| 壶关县| 崇左市| 灵石县| 壤塘县| 高清| 韶关市| 松桃| 大田县| 光山县| 琼结县| 元江| 大港区| 常熟市| 宝清县| 龙游县| 龙口市| 澄迈县| 金塔县| 论坛| 腾冲县| 扶绥县| 新宁县| 静安区| 耿马| 肇庆市| 镇赉县| 满洲里市| 陕西省| 青阳县| 九龙坡区| 原平市| 平南县|