Android游戲引擎libgdx使用教程7:引擎框架總觀
前面幾節(jié)主要講了libgdx框架一些基本類的使用方法,還分享了一部分源碼,要進(jìn)行實(shí)際開(kāi)發(fā)只掌握幾個(gè)類是不夠的,還需要對(duì)libgdx框架有宏觀的、整體的了解。
1、應(yīng)用的生命周期
游戲應(yīng)該高效和穩(wěn)定,特別是對(duì)于android平臺(tái)。目前的開(kāi)發(fā)都是面向手機(jī)和平板。如果有效的管理資源,如何高效的運(yùn)行都是非常重要的。
試想一個(gè)制作優(yōu)美,可玩性高的游戲運(yùn)行于你的android手機(jī)上卻10秒鐘崩潰一次,運(yùn)行時(shí)卡的如同在看漫畫(huà),這樣的游戲是有合格的嗎?
Android一般不用管resize(),我們?cè)赾reate中實(shí)例化所需的對(duì)象,在render()中進(jìn)行繪制。pause()時(shí)可以保持當(dāng)前的靈活數(shù)據(jù)。dispose()報(bào)銷對(duì)象。而在resume()中根據(jù)保持的數(shù)據(jù)對(duì)游戲進(jìn)行還原。
其實(shí)說(shuō)不負(fù)責(zé)一點(diǎn),dispose()你可以不管,android系統(tǒng)會(huì)自動(dòng)回收一些,用戶對(duì)于退出后的短暫停滯也是有接受能力的。
create()你也可以水一些,大不了進(jìn)入游戲或者初始化相關(guān)場(chǎng)景時(shí)速度慢一些罷了。
但是pause()和resume()你必須認(rèn)真處理。電話是最常見(jiàn)的意外性中斷,不會(huì)有用戶偏愛(ài)一個(gè)電話就可以讓記錄或者進(jìn)度消失的游戲的。
2、游戲構(gòu)架
對(duì)于是否該稱架構(gòu)我一直有所疑惑,你可以理解為游戲的組成。一個(gè)游戲不論大小,不論復(fù)雜程度都應(yīng)該具有的大致框架。
這里稍微解釋一下。
輸入只是用戶的響應(yīng),可以是點(diǎn)擊(Touch)或者點(diǎn)擊(Click),拖拽(Drag)等。
輸出一般是圖片和聲音或者影像,當(dāng)時(shí)也有文件或者其他數(shù)據(jù)(比如網(wǎng)絡(luò)的存儲(chǔ))。
而在輸入中的文件一般為圖片和聲音,邏輯由數(shù)學(xué)邏輯和物理邏輯構(gòu)成。
而libgdx對(duì)于物理上處理是Box2D的封裝,可以滿足一般需求了。對(duì)于數(shù)學(xué)的封裝了一些常見(jiàn)的結(jié)構(gòu)和少量算式,不過(guò)可以基于此開(kāi)發(fā)自己需要的算法。
libgdx對(duì)于圖像和聲音等文件的處理比較好,可以直接使用。
3、游戲容器
最原始的容器自然是Application了。
然后是Game,它管理著若干個(gè)Screen,比如游戲場(chǎng)景,積分場(chǎng)景,幫助場(chǎng)景,高分榜場(chǎng)景。而場(chǎng)景之下有著若干舞臺(tái),舞臺(tái)之中是演員。