aircraft-war(六)

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è)置會在組件里:


image.png

音效部分完成,代碼在這里。

優(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ī)玩玩就好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容