本人目前使用cocosCreator開發(fā)過兩個(gè)項(xiàng)目递览,使用LayaBox開發(fā)過一個(gè)項(xiàng)目叼屠,現(xiàn)對(duì)這兩個(gè)框架發(fā)表一下自己使用下來的一些心得,并列舉一下兩者間的差距绞铃。對(duì)比版本:LayaBox(1.7.20)镜雨,CocosCreator(1.9.2)
從表面上看
LayaBox的優(yōu)勢(shì):
- 支持使用額外的一個(gè)語言ActionScript3進(jìn)行編碼
- 對(duì)濾鏡和Shader的支持較好
- Sprite提供了cacheAs屬性以支持渲染緩存,提升渲染效率
Cocos的優(yōu)勢(shì)
- UI編輯器較為強(qiáng)大儿捧,插件化開發(fā)
- 發(fā)布為Native APP后與原生APP交互的能力較強(qiáng)
開發(fā)中實(shí)際體驗(yàn)
IDE對(duì)比
代碼編輯器
LayaBox:集成了一個(gè)低版本的VS Code作為代碼編輯器荚坞,支持的typeScript版本較低,很多VS Code新功能無法體驗(yàn)
cocos:沒有代碼編輯器但是可以配置VS Code作為其代碼編輯器菲盾,官方提供了相關(guān)配置教程颓影,配置完畢后可以通過VS Code編輯代碼,然后通過設(shè)置一個(gè)快捷鍵來編譯項(xiàng)目并運(yùn)行
總結(jié):cocos代碼編輯體驗(yàn)較好懒鉴,因?yàn)橛玫氖枪俜桨姹綱S Code瞭空,能及時(shí)升級(jí)到最新版本體驗(yàn)所有新特性
UI編輯器
LayaBox:
cocos:
差異:
- layabox支持節(jié)點(diǎn)鎖定,使節(jié)點(diǎn)在點(diǎn)擊時(shí)無法被選中疗我,但是cocos沒有提供該功能
- cocos支持僅橫向/縱向拖動(dòng)節(jié)點(diǎn),layabox沒有該功能
- layabox一個(gè)組件提供一個(gè)功能南捂,而cocos所有組件可以疊加使用吴裤,一個(gè)節(jié)點(diǎn)上可以掛載多個(gè)組件以提供多種功能,更加靈活
- cocos提供節(jié)點(diǎn)染色功能溺健,設(shè)置Color屬性可以改變一個(gè)節(jié)點(diǎn)的整體顏色麦牺,簡(jiǎn)單地說,拖放一個(gè)白色圖片到舞臺(tái)上后鞭缭,可以通過修改Color屬性將其變成任何顏色剖膳,而Layabox不行,需要顯示多少種顏色就需要準(zhǔn)備多少?gòu)垐D片
- 錨點(diǎn)Anchor在LayaBox中不會(huì)對(duì)子節(jié)點(diǎn)生效岭辣,當(dāng)子節(jié)點(diǎn)的錨點(diǎn)為默認(rèn)值(0吱晒,0)時(shí),不論父節(jié)點(diǎn)錨點(diǎn)設(shè)置為什么沦童,子節(jié)點(diǎn)永遠(yuǎn)在父節(jié)點(diǎn)的左上角仑濒。但是在cocos中則相反,父節(jié)點(diǎn)錨點(diǎn)會(huì)對(duì)子節(jié)點(diǎn)錨點(diǎn)產(chǎn)生影響偷遗,若父子節(jié)點(diǎn)錨點(diǎn)均為(0.5,0.5),然x和y均為0的情況下它們的中心點(diǎn)是重合在一起的墩瞳,這樣對(duì)于排版來說更加便利
- 資源產(chǎn)生變化后cocos會(huì)自動(dòng)刷新資源管理器面板,而layabox需要手動(dòng)點(diǎn)擊刷新按鈕
-
九宮格編輯窗口:cocos的九宮格編輯窗口可以拉伸氏豌,也可以通過鼠標(biāo)滾輪縮放圖片大小便于我們精細(xì)定位分割線位置喉酌,但是layabox并沒有這些功能,在圖片尺寸較大時(shí)無法看見分割線位置
Cocos2.png
LAYA2.png - 腳本和節(jié)點(diǎn)關(guān)聯(lián)方式:
layabox提供了runtime,拓展腳本及附加腳本泪电。拓展腳本和附加腳本都可以通過拖放的方式在UI編輯器中使之關(guān)聯(lián)到腳本上般妙。拓展腳本其實(shí)就是runtime,只不過它可以開放幾個(gè)共有屬性給UI編輯器進(jìn)行編輯。將拓展腳本拖放到節(jié)點(diǎn)上后歪架,該節(jié)點(diǎn)的屬性面板中會(huì)出現(xiàn)拓展腳本的名字及其開放配置的幾個(gè)屬性股冗,而將附加腳本拖放到節(jié)點(diǎn)上后,節(jié)點(diǎn)內(nèi)會(huì)增加一個(gè)腳本子節(jié)點(diǎn)和蚪,點(diǎn)擊選中該腳本子節(jié)點(diǎn)后方可設(shè)置它開放配置的屬性止状。這三種方式配置流程很不一樣,設(shè)置腳本所開放配置的屬性的方式也不一樣攒霹,很容易弄混怯疤,非程序員無法玩轉(zhuǎn)。
cocos只有一種方式催束,就是將寫好的腳本文件之間拖放到節(jié)點(diǎn)上集峦,此時(shí)在節(jié)點(diǎn)的屬性面板會(huì)出現(xiàn)該腳本開放配置的屬性,這種方式和layabox的配置拓展腳本的方式如出一轍抠刺,但其僅有這一種方式的話就簡(jiǎn)單很多塔淤,非程序員也可快速掌握。cocos最屌的地方在于速妖,將一個(gè)腳本關(guān)聯(lián)到節(jié)點(diǎn)后該節(jié)點(diǎn)在UI編輯器中的外觀會(huì)立即被該腳本所影響高蜂,簡(jiǎn)單的一個(gè)例子是,我為一個(gè)列表節(jié)點(diǎn)掛載了一個(gè)能改變列表項(xiàng)間距的腳本罕容,且該腳本開放了一個(gè)space屬性供配置备恤,那么在掛載后我每次調(diào)整space屬性的值時(shí),UI編輯器里的列表項(xiàng)間距都會(huì)馬上發(fā)生改變锦秒,這樣就避免了我每次改完space屬性值后還得編譯項(xiàng)目再啟動(dòng)調(diào)試去看最終效果露泊,大大提高了UI編輯效率。
總結(jié):cocos的UI編輯器碾壓Layabox
腳本運(yùn)作方式
LayaBox:
runtime及拓展腳本都是通過繼承所掛載組件的類來實(shí)現(xiàn)功能的旅择,比如我寫了一個(gè)拓展腳本GBox惭笑,將其掛載到UI編輯器中一個(gè)HBox上面,那么該HBox在項(xiàng)目運(yùn)行時(shí)就不再是通過new HBox()來產(chǎn)生組件實(shí)例了生真,而是通過new GBox()脖咐,這樣的話我在寫腳本的時(shí)候還必須先了解清楚它所繼承的父類內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)是怎樣,這往往意味著需要看layabox框架的UI組件部分源代碼汇歹,很讓人頭疼是不是屁擅?
cocos:
包括官方提供的組件在內(nèi)一切腳本皆是附加腳本,這意味著我在寫腳本的時(shí)候不需要關(guān)心該腳本所要掛載到的節(jié)點(diǎn)是什么類型产弹,內(nèi)部實(shí)現(xiàn)細(xì)節(jié)是怎樣派歌,我只需要關(guān)心我需要為掛載到的節(jié)點(diǎn)提供哪些新功能即可
總結(jié):
cocos腳本使用更加便捷清晰不易出錯(cuò)弯囊,大部分時(shí)間僅需在UI編輯器中拖拽腳本以及設(shè)置腳本開放配置的屬性即可,代碼量很少