aircraft-war(六)
Cocos creator/ aircraft-war#
最后的收尾工作
- 音效
- 完善游戲開始、結(jié)束
- 優(yōu)化
完善游戲開始、結(jié)束
轉(zhuǎn)場只有一行代碼:cc.director.loadScene('SceneName');
別的場景的創(chuàng)建沒什么難度,無非就是加加事件,代碼參考這里
音效
音頻的加載方式只影響 Web 上的加載效果 ,默認(rèn)的音頻資源是WebAudio,這種方式的優(yōu)點(diǎn)是兼容性好,問題比較少。缺點(diǎn)是占用的內(nèi)存資源過多。
音效有兩種使用方式,AudioSource / AudioEngine,具體看這里
音效無非就是加AudioSource組件,然后編寫腳本:
cc.Class({
properties: {
audio: {
url: cc.AudioClip,
default: null
}
},
onLoad: function () {
this.current = cc.audioEngine.play(this.audio, false, 1);
},
onDestroy: function () {
cc.audioEngine.stop(this.current);
}
});
注意:
audioSource: {
// type
type: cc.AudioSource,
default: null
},
audio: {
// url
url: cc.AudioClip,
default: null
}
如果使用AudioSource組件,設(shè)置會在組件里:

音效部分完成,代碼在這里。
優(yōu)化
對象池的優(yōu)化
當(dāng)對象池實(shí)例不再被任何地方引用時(shí),引擎的垃圾回收系統(tǒng)會自動對對象池中的節(jié)點(diǎn)進(jìn)行銷毀和回收。但這個(gè)過程的時(shí)間點(diǎn)不可控,另外如果其中的節(jié)點(diǎn)有被其他地方所引用,也可能會導(dǎo)致內(nèi)存泄露,所以最好在切換場景或其他不再需要對象池的時(shí)候手動調(diào)用 clear 方法來清空緩存節(jié)點(diǎn)。
// 清空緩沖池
clearAllPool: function () {
_.forEach(D.commonState.poolObj, function (pool) {
pool.clear();
})
}
組件在層級管理器的層級
不可忽視層級管理器會影響組件的透視效果,所以需要考慮哪些組件該在上面哪些組件被藏在下面比較好。
使用npm包
使用第三方模塊
我之前大部分的時(shí)間都投入到前端開發(fā)中,看到這個(gè)仿佛他鄉(xiāng)遇故知。什么lodash、moment都可以用了。
現(xiàn)在可以使用yarn來替代npm。
在項(xiàng)目代碼中,我使用了lodash這個(gè)包,所以需要先安裝我們的包。
在項(xiàng)目中,我使用了yarn來代替npm,也可以直接使用npm來安裝,都是沒有問題的。
如果直接使用yarn,可以先不用部署node環(huán)境,如果已經(jīng)有node環(huán)境,也無所謂。
看一下這個(gè)yarn的安裝
如果想要使用npm,我建議順便先把node環(huán)境配置好,以后想要做網(wǎng)絡(luò)游泳,也需要該環(huán)境。
nvm以及node、npm的安裝與使用
等具備以上的需求后,在項(xiàng)目的根目錄執(zhí)行以下命令來安裝所需要的包:
// yarn
yarn install
// npm
npm install
頁面布局以及適配
UI系統(tǒng)是最基礎(chǔ)的部分,雖然不想功能那樣,要么0要么1,但是想要游戲能夠在更多的設(shè)備完美運(yùn)行,就得潛心研究適配的問題,渲染的問題等。
目前在層級管理器,很多組件都是固定大小的size,但是要想移動設(shè)備能夠完美運(yùn)行,就要考慮適配的問題。使用widget掛件可以去適配不同大小的屏幕以確保位置不變。
游戲邏輯
很多問題并不是編碼問題,而是邏輯的問題。比如原作代碼,暫停與開始的部分,我在臨摹的時(shí)候,并沒有使用。
原作中對對象池的處理,比如,使用炸彈是直接把所有的children從parentNode上remove了,這樣的代碼設(shè)計(jì)對于對象池的設(shè)計(jì)來說并“不正確”,游戲結(jié)束,也并沒有清空所有的對象池。等等還有很多我與原作思路上的不同。
這并不是說原作的代碼不好,相反,原作的代碼質(zhì)量非常高,通過對方的代碼,可以看出是個(gè)格局很大的人,各方面設(shè)計(jì)的很全面,而且
抽象的方法,繼承等等運(yùn)用熟練,都很能體現(xiàn)出編程能力的深厚,非常值得學(xué)習(xí)。在此,再一次感謝原作者“A123asdo11”的代碼貢獻(xiàn)。
后續(xù)
本地保存數(shù)據(jù)這個(gè)功能暫時(shí)沒做,還有其他地方的需要優(yōu)化,想給游戲的難度進(jìn)行升級,加入BOSS,后續(xù)還想做聯(lián)機(jī)版,想運(yùn)用一下socket.io來學(xué)習(xí)一下聯(lián)機(jī)游戲。
當(dāng)然,還要嘗試發(fā)布游戲。想發(fā)布到web平臺,朋友們聯(lián)機(jī)玩玩就好。