技術(shù)領(lǐng)域
本發(fā)明涉及手機(jī)游戲引擎技術(shù)領(lǐng)域,具體涉及一種兼容不同Cocos2d-x版本的方法。
背景技術(shù):
Cocos 2d-x是一個(gè)支持多平臺(tái)的2D手機(jī)游戲引擎,使用Cocos 2d-x進(jìn)行開(kāi)發(fā)可以很容易地將項(xiàng)目建立和運(yùn)行在iOS,Android,黑莓Blackberry等操作系統(tǒng)中。
Cocos 2d-x具有不同的版本,因此在開(kāi)發(fā)游戲的過(guò)程中將會(huì)面臨引擎版本管理的問(wèn)題,例如創(chuàng)建基于不同引擎版本的項(xiàng)目、升級(jí)現(xiàn)有項(xiàng)目的引擎版本等。與此同時(shí),因?yàn)椴煌姘姹局g存在很多差異,在使用時(shí)還需要考慮引擎版本與當(dāng)前項(xiàng)目、與使用的編輯器之間的兼容性問(wèn)題。
現(xiàn)有技術(shù)需要通過(guò)手動(dòng)替換引擎文件的方式來(lái)管理項(xiàng)目的Cocos 2d-x版本,它要求技術(shù)人員對(duì)引擎文件的結(jié)構(gòu)、使用方式有較為詳細(xì)的了解。這種管理方式在實(shí)際兼容引擎版本時(shí)的操作也較為繁瑣,而且替換引擎文件的過(guò)程一旦出錯(cuò),將會(huì)導(dǎo)致游戲項(xiàng)目無(wú)法使用。此外,這種方式并不能有效地控制Cocos 2d-x版本的兼容性問(wèn)題,如果錯(cuò)誤地使用了與項(xiàng)目或編輯器不兼容的Cocos 2d-x版本,也將導(dǎo)致項(xiàng)目無(wú)法正常運(yùn)作,從而降低項(xiàng)目開(kāi)發(fā)的穩(wěn)定性。
綜上,現(xiàn)有方法在兼容不同Cocos 2d-x版本時(shí)具有技術(shù)門(mén)檻高、操作復(fù)雜、差錯(cuò)率高等問(wèn)題。此外,項(xiàng)目或編輯器對(duì)Cocos 2d-x版本的約束控制也較差,從而導(dǎo)致項(xiàng)目開(kāi)發(fā)的穩(wěn)定性差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種兼容不同Cocos 2d-x版本的方法,以解決現(xiàn)有技術(shù)中兼容不同Cocos 2d-x版本時(shí)存在的技術(shù)難度高、操作復(fù)雜、差錯(cuò)率高、穩(wěn)定性差的問(wèn)題。
本發(fā)明提供的一種兼容不同Cocos 2d-x 版本的方法,包括如下步驟:
S1:Cocos編輯器獲取可用的Cocos 2d-x 版本;
S2:Cocos編輯器使用所述可用的Cocos 2d-x 版本進(jìn)行創(chuàng)建項(xiàng)目、Cocos 2d-x 版本升級(jí)、打包發(fā)布。
進(jìn)一步的,所述Cocos編輯器獲取可用的Cocos 2d-x 版本,具體為:
S11:FrameworkHelper類通過(guò)硬編碼的方式內(nèi)置當(dāng)前所有兼容的Cocos 2d-x版本,并使用當(dāng)前所有兼容的Cocos 2d-x版本完成初始化;
S12:FrameworkHelper類向服務(wù)器請(qǐng)求當(dāng)前最新的Cocos 2d-x版本列表,當(dāng)請(qǐng)求成功的時(shí)候,F(xiàn)rameworkHelper類便使用從服務(wù)器獲得的當(dāng)前最新的Cocos 2d-x版本列表作為支持版本列表,同時(shí)將所述支持列表以配置文件的形式存儲(chǔ)到本地硬盤(pán);
S13:FrameworkHelper類檢測(cè)本地安裝了哪些Cocos 2d-x版本,并將本地已經(jīng)安裝且包含在所述支持版本列表中的Cocos 2d-x版本作為可用的Cocos 2d-x版本。
進(jìn)一步的,所述Cocos編輯器使用所述可用的Cocos 2d-x 版本進(jìn)行Cocos 2d-x 版本升級(jí),包括兩種類型的操作:
將Cocos編輯器中的資源項(xiàng)目升級(jí)為完整項(xiàng)目或升級(jí)完整項(xiàng)目中Cocos 2d-x的版本。
更進(jìn)一步的,所述將Cocos編輯器中的資源項(xiàng)目升級(jí)為完整項(xiàng)目,具體為:
服務(wù)類使用所選定的Cocos 2d-x版本在另一位置創(chuàng)建一個(gè)與資源項(xiàng)目同名的項(xiàng)目,所述同名的項(xiàng)目中包含了由所有需要的Cocos 2d-x版本構(gòu)成的引擎庫(kù)文件;
將所述同名的項(xiàng)目中的引擎庫(kù)文件復(fù)制到原有項(xiàng)目的對(duì)應(yīng)目錄下,完成后再將所述同名的項(xiàng)目刪除。
更進(jìn)一步的,所述升級(jí)完整項(xiàng)目中Cocos 2d-x的版本,具體為:
服務(wù)類使用所選定的Cocos 2d-x版本在另一位置創(chuàng)建一個(gè)與完整項(xiàng)目同名的項(xiàng)目,所述同名的項(xiàng)目中包含了由所有需要的Cocos 2d-x版本構(gòu)成的引擎庫(kù)文件;
用所述同名的項(xiàng)目中的引擎庫(kù)文件覆蓋原有項(xiàng)目的對(duì)應(yīng)目錄下的引擎庫(kù)文件,完成后再將所述同名的項(xiàng)目刪除。
優(yōu)選的,所述升級(jí)完整項(xiàng)目中Cocos 2d-x的版本,具體為:
執(zhí)行命令行工具Console所提供的upgrade命令。
本發(fā)明的有益技術(shù)效果為:
本發(fā)明首先通過(guò)獲取所有與項(xiàng)目和Cocos編輯器兼容的Cocos 2d-x版本對(duì)項(xiàng)目與Cocos編輯器可以使用的Cocos 2d-x進(jìn)行控制,避免了項(xiàng)目開(kāi)發(fā)過(guò)程中Cocos 2d-x 版本不兼容的問(wèn)題,增強(qiáng)了項(xiàng)目的穩(wěn)定性;其次,本發(fā)明給出了自動(dòng)升級(jí)Cocos 2d-x版本的方法,通過(guò)調(diào)用由服務(wù)類提供的引擎庫(kù)即可完成Cocos 2d-x 版本的升級(jí),省去了手動(dòng)更換引擎文件的繁瑣,同時(shí)降低了技術(shù)門(mén)檻和差錯(cuò)率。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的兼容不同Cocos 2d-x版本的方法流程圖;
圖2是本發(fā)明實(shí)施例提供的Cocos 2.3.2版本創(chuàng)建項(xiàng)目界面的示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,不能理解為對(duì)本發(fā)明具體保護(hù)范圍的限定。
本實(shí)施例提供的一種兼容不同Cocos 2d-x 版本的方法,包括如下步驟:
如圖1所示,第一步為Cocos編輯器獲取可用的Cocos 2d-x 版本。
版本管理的功能代碼包含在FrameworkHelper類當(dāng)中。這個(gè)類位于CocoStudio.Projects項(xiàng)目,它主要負(fù)責(zé)對(duì)外提供當(dāng)前Cocos編輯器所可以使用的Cocos 2d-x版本。Cocos編輯器只能使用由FrameworkHelper所提供的Cocos 2d-x來(lái)進(jìn)行創(chuàng)建項(xiàng)目、升級(jí)引擎、打包發(fā)布等操作,而FrameworkHelper所提供的Cocos 2d-x版本都是與當(dāng)前Cocos編輯器相兼容的版本,這樣便可以保證在使用Cocos 2d-x的過(guò)程中不會(huì)出現(xiàn)兼容性的問(wèn)題。
FrameworkHelper類通過(guò)硬編碼的方式內(nèi)置了當(dāng)前所有兼容的Cocos 2d-x版本號(hào)。當(dāng)Cocos編輯器啟動(dòng)的時(shí)候,會(huì)把這些版本號(hào)作為初始的支持版本列表。因?yàn)镃ocos 2d-x在Cocos編輯器發(fā)布之后還會(huì)陸續(xù)發(fā)布新的版本,只靠硬編碼的方式并不能獲取到最新發(fā)布的Cocos 2d-x兼容版本號(hào)。所以當(dāng)FrameworkHelper類在使用硬編碼的版本列表完成了初始化之后,會(huì)嘗試連接服務(wù)器,向服務(wù)器請(qǐng)求當(dāng)前最新的版本列表。當(dāng)請(qǐng)求成功的時(shí)候,F(xiàn)rameworkHelper類便使用從服務(wù)器獲得的最新的版本列表作為支持版本列表,同時(shí)將該支持版本列表以配置文件的形式存儲(chǔ)到本地硬盤(pán)。這樣當(dāng)電腦處于網(wǎng)絡(luò)斷開(kāi)的狀態(tài)下的時(shí)候,F(xiàn)rameworkHelper類也可以通過(guò)該配置文件獲取到正常支持版本列表。
執(zhí)行完上述步驟后,F(xiàn)rameworkHelper類已經(jīng)獲得了所有支持的Cocos 2d-x版本。之后FrameworkHelper類開(kāi)始檢測(cè)本地安裝了哪些Cocos 2d-x版本。只有在本地已經(jīng)安裝,且包含在支持版本列表中的Cocos 2d-x版本才是可用的Cocos 2d-x版本。
如圖2所示是本實(shí)施例提供的Cocos 2.3.2編輯器創(chuàng)建項(xiàng)目界面的截圖,圖中的下拉框中顯示了創(chuàng)建項(xiàng)目時(shí)所可以選擇的Cocos 2d-x的版本。在本實(shí)施例中,Cocos編輯器首先從服務(wù)器獲取到了它所支持的Cocos 2d-x版本列表,具體列表如下:
<FrameworkVersion="cocos2d-x-3.4"/>
<FrameworkVersion="cocos2d-x-3.5"/>
<FrameworkVersion="cocos2d-x-3.6"/>
<FrameworkVersion="cocos2d-x-3.7"/>
<FrameworkVersion="cocos2d-x-3.7.1"/>
而該實(shí)施例的本地只安裝了Cocos 2d-x的3.6版本以及3.7.1版本,因此可用的Cocos 2d-x 版本為3.6版本以及3.7.1版本,創(chuàng)建項(xiàng)目時(shí)只可以從“無(wú)”,“3.6”以及“3.7.1”這三個(gè)選項(xiàng)中進(jìn)行選擇,保證了創(chuàng)建的項(xiàng)目以及cocos編輯器與Cocos 2d-x版本的兼容性(如果選擇“無(wú)”,則創(chuàng)建出來(lái)的項(xiàng)目為不帶有引擎的資源項(xiàng)目)。
如圖1所示,第二步為Cocos編輯器使用所述可用的Cocos 2d-x 版本進(jìn)行創(chuàng)建項(xiàng)目、Cocos 2d-x 版本升級(jí)、打包發(fā)布。
所述Cocos編輯器使用所述可用的Cocos 2d-x 版本進(jìn)行Cocos 2d-x 版本升級(jí),由Modules.Communal.CocosAdapter項(xiàng)目負(fù)責(zé),包括兩種類型的操作:
將Cocos編輯器中的資源項(xiàng)目升級(jí)為完整項(xiàng)目或升級(jí)完整項(xiàng)目中Cocos 2d-x的版本。
Cocos編輯器中使用的項(xiàng)目有兩種類型,分別是資源項(xiàng)目與完整項(xiàng)目,它們之間的區(qū)別在于項(xiàng)目中是否包含了Cocos 2d-x引擎庫(kù)文件——不包含引擎庫(kù)文件的項(xiàng)目為資源項(xiàng)目,包含了引擎庫(kù)文件的項(xiàng)目為完整項(xiàng)目。資源項(xiàng)目可以使用步驟一中所提供的可用的Cocos 2d-x版本來(lái)升級(jí)為完整項(xiàng)目,這一升級(jí)操作的功能由CocosAdapter項(xiàng)目中的Cocos2dxSupplymentServices服務(wù)類來(lái)提供。
所述將Cocos編輯器中的資源項(xiàng)目升級(jí)為完整項(xiàng)目,具體為:
服務(wù)類使用所選定的Cocos 2d-x版本在另一位置創(chuàng)建一個(gè)與資源項(xiàng)目同名的項(xiàng)目,所述同名的項(xiàng)目中包含了由所有需要的Cocos 2d-x版本構(gòu)成的引擎庫(kù)文件;
將所述同名的項(xiàng)目中的引擎庫(kù)文件復(fù)制到原有項(xiàng)目的對(duì)應(yīng)目錄下,完成后再將所述同名的項(xiàng)目刪除。這樣原有的資源項(xiàng)目中便具有了它所需要的引擎庫(kù)文件,成為了完整項(xiàng)目。
更進(jìn)一步的,所述升級(jí)完整項(xiàng)目中Cocos 2d-x的版本,具體為:
服務(wù)類使用所選定的Cocos 2d-x版本在另一位置創(chuàng)建一個(gè)與完整項(xiàng)目同名的項(xiàng)目,所述同名的項(xiàng)目中包含了由所有需要的Cocos 2d-x版本構(gòu)成的引擎庫(kù)文件;
與升級(jí)資源項(xiàng)目時(shí)所不同的是,此時(shí)完整項(xiàng)目中對(duì)應(yīng)的目錄下已經(jīng)存在了同名的引擎庫(kù)文件,因此需要用所述同名的項(xiàng)目中的引擎庫(kù)文件覆蓋原有項(xiàng)目的對(duì)應(yīng)目錄下的引擎庫(kù)文件,完成后再將所述同名的項(xiàng)目刪除。
實(shí)施例二:
實(shí)施例一中升級(jí)完整項(xiàng)目中Cocos 2d-x的版本,還可以采用如下方法:
Cocos Framework附帶有命令行工具Console。在Cocos 2d-x 3.6及之后的版本中,命令行工具Console提供了upgrade命令。執(zhí)行該命令后,命令行工具Console也會(huì)升級(jí)完整項(xiàng)目中Cocos 2d-x的版本,即:先在其它位置創(chuàng)建一個(gè)新的同名項(xiàng)目,然后將新的同名項(xiàng)目中的引擎庫(kù)文件復(fù)制到原有項(xiàng)目目錄下。