LibGDX學習-LibGDX基本框架

Libgdx作者博客:http://www.badlogicgames.com/
Libgdx項目地址:https://github.com/libgdx/libgdx/


關於LibGDX的學習,建議看看Beginning Android Games, 2nd Edition,該書也是由LibGDX作者寫的。書中的遊戲實例可以看出LibGDX的雛形,便於大家更好的學習和理解LibGDX。Libgdx由audio、files、graphics、math、physics、scenes、utils這些主要類庫所組成,它們分別對應了Libgdx中的音頻操作,文件讀取,2D/3D渲染,Libgdx繪圖相關運算,Box2D封裝,2D/3D遊戲組件,以及Libgdx內置工具類。書中都有這些組件的封裝過程。


LibGDX和其他遊戲框架基本類似,從高層次來看,遊戲可以分爲遊戲資源和遊戲邏輯。

遊戲資源包括圖像、聲音、背景音樂等。遊戲邏輯負責轉換和跟蹤遊戲狀態。

爲了更好的理解,可以參考下圖:

212206311.png

第一步初始化遊戲:加載相關資源到內存、初始化遊戲狀態、註冊用戶輸入監聽(包括鍵盤、鼠標,手指觸摸等)等。

第二步進入遊戲循環邏輯:

(1)根據框架提供的循環,實現對應方法,根據DeltaTime和用戶輸入等不斷的更新遊戲狀態。

(2)根據狀態渲染遊戲畫面。

LigGDX的Gdx類擁有Application, Graphics, Audio, FilesInput類實例的引用。 分別用於處理應用程序基本信息、圖像、音視頻、文件和用戶輸入。

LibGDX對於程序內部循環定義如下:

public interface ApplicationListener {

 public void create ();

 public void resize (int width, int height);

 public void render ();

 public void pause ();

 public void resume ();

 public void dispose ();

}

我們需要做的就是實現這些接口方法。

這些方法對應的程序運行狀態圖如下:

221831984.png

在Libgdx中,與遊戲顯示相關度最高的包總共有兩個,一個是graphics包,其中包含着Libgdx爲進行OpenGL渲染所提供的功能實現,而另一個,就是下面介紹的scenes包,這裏包含着Libgdx所提供的可以直接使用到遊戲中的遊戲組件,共分scenes2d以及scenes3d兩大部分(3D部分暫無內容)。其中2D部分的核心在於Actor類,Libgdx所有2D組件使用都圍繞着Actor展開。

對於Libgdx中游戲組件使用的簡單關係說明:

AndroidApplication (Activity的子類,只有啓動類繼承了AndroidApplication並執行才能啓動Libgdx類庫)
|
ApplicationListener (僅可在初始化時注入ApplicationListener,此後除非替換Activity否則無法切換ApplicationListener) - Game (ApplicationListener的libgdx抽象實現,其中Screen可切換)

|
Screen (基本函數與ApplicationListener近乎一致,唯一差別在於可以通過Game類用setScreen函數進行切換,如不使用Game類則可無視它的存在)
|
Stage (遊戲場景用類,用以管理添加其中的具體Actor,管理Actor的手段在於內置的Group類)
|
Group (本身爲Actor的具體實現,能夠處理注入其中的Actor,也能以遞歸方式管理注入其中的其它Group)
|
Actor (遊戲用演員或者說角色,與Action類組合使用時可以產生不同種類的“動畫行爲”,Action部分的具體實現基本與Cocos2D一致)
|
Image、Button、Label等 (細分Actor的具體實現,以重載方式響應事件,除Group外相互間不能組合疊加,事件能否傳遞取決於上級組件是否設置了相關監聽)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章