詳解CocosCreator項目結(jié)構(gòu)機制
一、項目文件夾結(jié)構(gòu)
初次創(chuàng)建并打開一個 Cocos Creator 項目后,開發(fā)者的項目文件夾將會包括以下結(jié)構(gòu):
下面我們將會介紹每個文件夾的功能。
1.資源文件夾(assets)
assets 將會用來放置游戲中所有的本地資源、腳本和第三方庫文件。只有在 assets 目錄下的內(nèi)容才能顯示在 資源管理器 中。assets 中的每個文件在導入項目后都會生成一個相同名字的 .meta 文件,用于存儲對應(yīng)的資源配置和索引信息。.meta 文件需要一并提交到版本控制系統(tǒng),詳見 資源管理注意事項 --- meta 文件。
一些第三方工具生成的工程或設(shè)計原文件,如 TexturePacker 的 .tps 文件,或 Photoshop 的 .psd 文件,可以選擇放在 assets 外面來管理。
2.資源庫(library)
library 是將 assets 中的資源導入后生成的,在這里文件的結(jié)構(gòu)和資源的格式將被處理成最終游戲發(fā)布時需要的形式。當 library 丟失或損壞的時候,只要刪除整個 library 文件夾再打開項目,就會重新生成資源庫。
3.本地設(shè)置(local)
local 文件夾中包含該項目的本機上的配置信息,包括編輯器面板布局,窗口大小,位置等信息。開發(fā)者不需要關(guān)心這里的內(nèi)容。
4.擴展插件文件夾(packages)
packages 文件夾用于放置此項目的自定義擴展插件。如需手動安裝擴展插件,可以手動創(chuàng)建此文件夾。如需卸載擴展插件,在 packages 中刪除對應(yīng)的文件夾即可。
5.項目設(shè)置(settings)
settings 里保存項目相關(guān)的設(shè)置,如 構(gòu)建發(fā)布 菜單里的包名、場景和平臺選擇等。
6.臨時文件夾(temp)
temp 是臨時文件夾,用于緩存一些 Cocos Creator 在本地的臨時文件。這個文件夾可以在關(guān)閉 Cocos Creator 后手動刪除,開發(fā)者不需要關(guān)心這里面的內(nèi)容。
7.project.json
project.json 文件和 assets 文件夾一起,作為驗證 Cocos Creator 項目合法性的標志,只有包括了這兩個內(nèi)容的文件夾才能作為 Cocos Creator 項目打開。開發(fā)者不需要關(guān)心里面的內(nèi)容。
8.構(gòu)建目標(build)
在使用主菜單中的 項目 -> 構(gòu)建發(fā)布... 使用默認發(fā)布路徑發(fā)布項目后,編輯器會在項目路徑下創(chuàng)建 build 目錄,并存放所有目標平臺的構(gòu)建工程。
9.版本控制
Cocos Creator 在新建項目時,會自動生成 .gitignore 文件,用于排除不應(yīng)該提交到 git 倉庫的文件。如果開發(fā)者使用其它版本控制系統(tǒng),或者需要提交項目到其它地方,應(yīng)該注意只需要提交 assets、packages、settings、project.json,或其它手動添加的關(guān)聯(lián)文件。
二、資源管理注意事項 --- meta 文件
理解 Creator 生成 meta 文件的作用和機理,能幫助您和您的團隊解決在多人開發(fā)時常會遇到的資源沖突、文件丟失、組件屬性丟失等問題。那 meta 文件是做什么用的呢?下面我們來了解一下。
1. meta 文件的作用
先來看下場景中的 meta 文件長什么樣子:
預制件的 meta 文件與場景是一樣的。png 圖片的 meta 文件信息比較多,除了基本的 ver 和 uuid 外,還記錄了圖片的寬高、偏移、九宮格等數(shù)據(jù)。上面這么多信息,我們這里只關(guān)心一個:uuid。uuid : 通用唯一標識符(Universally Unique Identifier) uuid 是 Creator 用來管理游戲資源的。它會為每個文件分配一個唯一的 id,圖集會生成多個。由此可以了解在 Creator 引擎中,識別一個文件不是簡單地通過 路徑 + 文件名 定位,而是通過 uuid 來引用文件。因此可以在編輯器資源管理中,隨意刪除、移動文件。
2. meta 文件更新時機
Creator 生成 meta 文件有以下幾種情況:
1、打開工程時打開項目工程時,Creator 會先掃描 assets 目錄,如果哪個文件還沒有 meta 文件,此時就會生成。
2、更新資源時更新資源也會引發(fā) meta 文件的更新:
在 資源管理器 中可以對資源進行文件名修改、改變目錄、刪除文件,添加文件等操作,請參考 資源管理器。也可以直接從桌面或操作系統(tǒng)的文件管理器中將文件拖入到【資源管理器】中。還有一種情況是在操作系統(tǒng)的文件管理器中對 assets 目錄中的文件進行增、刪、改之后切換到編輯器界面,此時可以看到 資源管理器 刷新的過程。如果一個文件的 meta 文件不存在,上面兩種情況都會觸發(fā)引擎去生成 meta 文件。
3. meta 文件出錯的幾種情況及解決方法下面我們分析下 meta 文件出錯的幾種可能情況。uuid 沖突 uuid 是全局唯一的,產(chǎn)生沖突肯定是有不同的文件的 uuid 相同了,一旦出現(xiàn)這個問題會導致 Cocos Creator 資源管理器目錄結(jié)構(gòu)加載不完整。如下圖所示,遇到這種情況估計會讓你嚇出一身冷汗:
從提示中可以看到?jīng)_突的 uuid 字符串,然后打開操作系統(tǒng)文件管理或代碼編輯器,搜索這個 uuid:
此時先關(guān)閉 Creator 編輯器,再任意刪除其中一個 meta 文件,然后再打開 Creator 編輯器就可以解決。這種方法雖然可以解決問題,但在編輯器中引用到這個資源的地方將會出現(xiàn)資源丟失,需要重新編輯或者重新配置一次。最好是通過版本管理工具還原此 meta 文件。出現(xiàn)這種問題的原因一般有以下兩個:在操作系統(tǒng)的文件管理器中移動文件時,將剪切、粘貼不小心操作成了復制、粘貼,同時也把 meta 文件復制過去了。導致項目中同時出現(xiàn)兩個相同的 meta 文件。在多人協(xié)作時,從版本管理工具中,更新資源時碰巧遇到別人生成的 uuid 與你的電腦上某個文件生成的 uuid 一樣了,但這種情況非常非常罕見。總的來說,要減少 uuid 沖突發(fā)生,最好在引擎資源管理工具中進行添加、移動文件。
三、uuid 變化
還有一種情況是 uuid 變了,使得舊的 uuid 對應(yīng)的資源無法找到,這樣的話,你曾經(jīng)編輯的界面將會出現(xiàn)資源、圖片丟失,還可能出現(xiàn)組件屬性丟失。
如果找不到舊的 uuid 對應(yīng)的資源,通過 控制臺 可以看到 Creator 給出了所在的場景文件名、節(jié)點路徑、組件、uuid 等非常詳細的警告信息。通過警告信息可以快速定位出錯的地方。這種情況又是怎么造成的呢?當有一個人將新資源添加進項目時,忘記切換到編輯器界面使其生成 meta 文件,同時又將這些新增的文件提交到了版本管理中(不包含 meta 文件)。然后,有另一個人去更新了他所提交的資源,同時切換到了編輯器界面進行編輯,這時 Creator 會檢查到新資源沒有 meta 文件便會立即生成。而當?shù)谝粋€人切換到編輯器的時候也會生成 meta 文件,這樣兩個人的電腦上為同一個文件,但是生成的 meta 文件中的 uuid 都不相同。這種情況下,后面進行資源提交或更新的人,肯定也會遇到?jīng)_突,如果不明就理就強行解決沖突,就會產(chǎn)生上面所說的問題。下面的時序圖就描述了這種錯誤的工作流程:
因為第一個 A 同學忘記生成 meta 文件并提交,之后其他人都編輯過項目,但每個人生成的 uuid 都不同,這樣就會陷入無限的資源出錯中,編輯好的東西,一提交更新又出現(xiàn)沖突了。
要解決這個問題注意下面幾點:l提交前檢查是否有新增文件,有新增文件時,注意是否有 meta 文件,需要一起提交;l拉取文件時,注意是否有新增文件,并且是有 meta 文件成對,如果沒有的話,提醒之前提交文件的同學,把 meta 文件一并提交;l提交時,如果發(fā)現(xiàn)只有新增的 meta 文件,那這個 meta 文件肯定是自己生成的,需要注意是否使用過這個 meta 文件對應(yīng)的資源(同名文件)。如果沒用過,那請最早提交者把 meta 文件提交了。千萬不能將這個 meta 文件提交上去。注意上面幾點基本上就可以杜絕 meta 文件 uuid 變化導致的工程出錯了。
小結(jié):meta 文件是 Creator 用于資源管理的重要手段,但在多人協(xié)同開發(fā)中稍有不慎就容易產(chǎn)生資源錯誤。要解決這個問題,不僅需要理解 meta 文件的產(chǎn)生機制和導致沖突的原因,同時還應(yīng)該規(guī)范資源提交流程。
以上就是詳解CocosCreator項目結(jié)構(gòu)機制的詳細內(nèi)容,更多關(guān)于CocosCreator項目結(jié)構(gòu)機制的資料請關(guān)注腳本之家其它相關(guān)文章!
- 詳解cocoscreater預制體prefab
- 如何在CocosCreator中利用常駐節(jié)點做圖層管理
- 游戲開發(fā)中如何使用CocosCreator進行音效處理
- CocosCreator ScrollView優(yōu)化系列之分幀加載
- 如何使用CocosCreator對象池
- CocosCreator如何實現(xiàn)劃過的位置顯示紋理
- 整理CocosCreator常用知識點
- 全面講解CocosCreator熱更新
- CocosCreator經(jīng)典入門項目之flappybird
- CocosCreator通用框架設(shè)計之網(wǎng)絡(luò)
- 如何用CocosCreator實現(xiàn)射擊小游戲
- 怎樣在CocosCreator中使用游戲手柄
相關(guān)文章
JavaScript頁面模板庫handlebars的簡單用法
本文主要是給大家分享的一個javascript頁面模板庫Handlebars的簡單用法,可以幫助大家輕松的構(gòu)建語義化模板,非常的實用,推薦給大家。2015-03-03解決canvas畫布使用fillRect()時高度出現(xiàn)雙倍效果的問題
下面小編就為大家?guī)硪黄鉀Qcanvas畫布使用fillRect()時高度出現(xiàn)雙倍效果的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08javascript 獲取鏈接文件地址中第一個斜線內(nèi)的正則表達式
我想得到“windows”,請問用正則表達式怎么寫?2009-06-06