徹底搞清楚Cocos Creator項(xiàng)目結(jié)構(gòu)

一、 項(xiàng)目文件夾結(jié)構(gòu)

初次創(chuàng)建并打開一個 Cocos Creator 項(xiàng)目后,開發(fā)者的項(xiàng)目文件夾將會包括以下結(jié)構(gòu):

1. 資源文件夾(assets)

assets 將會用來放置游戲中所有的本地資源、腳本和第三方庫文件。只有在 assets 目錄下的內(nèi)容才能顯示在 資源管理器 中。assets 中的每個文件在導(dǎo)入項(xiàng)目后都會生成一個相同名字的 .meta 文件,用于存儲對應(yīng)的資源配置和索引信息。.meta 文件需要一并提交到版本控制系統(tǒng),詳見 資源管理注意事項(xiàng) --- meta 文件。

2. 資源庫(library)

library 是將 assets 中的資源導(dǎo)入后生成的,在這里文件的結(jié)構(gòu)和資源的格式將被處理成最終游戲發(fā)布時需要的形式。

當(dāng) library 丟失或損壞的時候,只要刪除整個 library 文件夾再打開項(xiàng)目,就會重新生成資源庫。

3. 本地設(shè)置(local)

local 文件夾中包含該項(xiàng)目的本機(jī)上的配置信息,包括編輯器面板布局,窗口大小,位置等信息。開發(fā)者不需要關(guān)心這里的內(nèi)容。

4. 擴(kuò)展插件文件夾(packages)

packages 文件夾用于放置此項(xiàng)目的自定義擴(kuò)展插件。如需手動安裝擴(kuò)展插件,可以手動創(chuàng)建此文件夾。如需卸載擴(kuò)展插件,在 packages 中刪除對應(yīng)的文件夾即可。

5. 項(xiàng)目設(shè)置(settings)

settings 里保存項(xiàng)目相關(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 文件夾一起,作為驗(yàn)證 Cocos Creator 項(xiàng)目合法性的標(biāo)志,只有包括了這兩個內(nèi)容的文件夾才能作為 Cocos Creator 項(xiàng)目打開。開發(fā)者不需要關(guān)心里面的內(nèi)容。

8. 構(gòu)建目標(biāo)(build)

在使用主菜單中的 項(xiàng)目 -> 構(gòu)建發(fā)布... 使用默認(rèn)發(fā)布路徑發(fā)布項(xiàng)目后,編輯器會在項(xiàng)目路徑下創(chuàng)建 build 目錄,并存放所有目標(biāo)平臺的構(gòu)建工程。點(diǎn)擊鏈接加入群聊【Unity/Cocos交流群】

9. 版本控制

Cocos Creator 在新建項(xiàng)目時,會自動生成 .gitignore 文件,用于排除不應(yīng)該提交到 git 倉庫的文件。如果開發(fā)者使用其它版本控制系統(tǒng),或者需要提交項(xiàng)目到其它地方,應(yīng)該注意只需要提交 assets、packages、settings、project.json,或其它手動添加的關(guān)聯(lián)文件。

二、 資源管理注意事項(xiàng) --- meta 文件

理解 Creator 生成 meta 文件的作用和機(jī)理,能幫助您和您的團(tuán)隊(duì)解決在多人開發(fā)時常會遇到的資源沖突、文件丟失、組件屬性丟失等問題。那 meta 文件是做什么用的呢?下面我們來了解一下。

1. meta 文件的作用

先來看下場景中的 meta 文件長什么樣子:

預(yù)制件的 meta 文件與場景是一樣的。

png 圖片的 meta 文件信息比較多,除了基本的 ver 和 uuid 外,還記錄了圖片的寬高、偏移、九宮格等數(shù)據(jù)。上面這么多信息,我們這里只關(guān)心一個:uuid。

uuid : 通用唯一標(biāo)識符(Universally Unique Identifier)

uuid 是 Creator 用來管理游戲資源的。它會為每個文件分配一個唯一的 id,圖集會生成多個。由此可以了解在 Creator 引擎中,識別一個文件不是簡單地通過 路徑 + 文件名 定位,而是通過 uuid 來引用文件。因此可以在編輯器資源管理中,隨意刪除、移動文件。

2. meta 文件更新時機(jī)

Creator 生成 meta 文件有以下幾種情況:

1、打開工程時

打開項(xiàng)目工程時,Creator 會先掃描 assets 目錄,如果哪個文件還沒有 meta 文件,此時就會生成。

2、更新資源時

更新資源也會引發(fā) meta 文件的更新:

在 資源管理器 中可以對資源進(jìn)行文件名修改、改變目錄、刪除文件,添加文件等操作,請參考 資源管理器。也可以直接從桌面或操作系統(tǒng)的文件管理器中將文件拖入到【資源管理器】中。

還有一種情況是在操作系統(tǒng)的文件管理器中對 assets 目錄中的文件進(jìn)行增、刪、改之后切換到編輯器界面,此時可以看到 資源管理器 刷新的過程。點(diǎn)擊鏈接加入群聊【Unity/Cocos交流群】

如果一個文件的 meta 文件不存在,上面兩種情況都會觸發(fā)引擎去生成 meta 文件。

3. meta 文件出錯的幾種情況及解決方法

下面我們分析下 meta 文件出錯的幾種可能情況。

uuid 沖突

uuid 是全局唯一的,產(chǎn)生沖突肯定是有不同的文件的 uuid 相同了,一旦出現(xiàn)這個問題會導(dǎo)致 Cocos Creator 資源管理器目錄結(jié)構(gòu)加載不完整。如下圖所示,遇到這種情況估計會讓你嚇出一身冷汗:

從提示中可以看到?jīng)_突的 uuid 字符串,然后打開操作系統(tǒng)文件管理或代碼編輯器,搜索這個 uuid:

此時先關(guān)閉 Creator 編輯器,再任意刪除其中一個 meta 文件,然后再打開 Creator 編輯器就可以解決。

這種方法雖然可以解決問題,但在編輯器中引用到這個資源的地方將會出現(xiàn)資源丟失,需要重新編輯或者重新配置一次。最好是通過版本管理工具還原此 meta 文件。

出現(xiàn)這種問題的原因一般有以下兩個:

在操作系統(tǒng)的文件管理器中移動文件時,將剪切、粘貼不小心操作成了復(fù)制、粘貼,同時也把 meta 文件復(fù)制過去了。導(dǎo)致項(xiàng)目中同時出現(xiàn)兩個相同的 meta 文件。

在多人協(xié)作時,從版本管理工具中,更新資源時碰巧遇到別人生成的 uuid 與你的電腦上某個文件生成的 uuid 一樣了,但這種情況非常非常罕見。

總的來說,要減少 uuid 沖突發(fā)生,最好在引擎資源管理工具中進(jìn)行添加、移動文件。

uuid 變化

還有一種情況是 uuid 變了,使得舊的 uuid 對應(yīng)的資源無法找到,這樣的話,你曾經(jīng)編輯的界面將會出現(xiàn)資源、圖片丟失,還可能出現(xiàn)組件屬性丟失。

如果找不到舊的 uuid 對應(yīng)的資源,通過 控制臺 可以看到 Creator 給出了所在的場景文件名、節(jié)點(diǎn)路徑、組件、uuid 等非常詳細(xì)的警告信息。通過警告信息可以快速定位出錯的地方。

這種情況又是怎么造成的呢?當(dāng)有一個人將新資源添加進(jìn)項(xiàng)目時,忘記切換到編輯器界面使其生成 meta 文件,同時又將這些新增的文件提交到了版本管理中(不包含 meta 文件)。然后,有另一個人去更新了他所提交的資源,同時切換到了編輯器界面進(jìn)行編輯,這時 Creator 會檢查到新資源沒有 meta 文件便會立即生成。而當(dāng)?shù)谝粋€人切換到編輯器的時候也會生成 meta 文件,這樣兩個人的電腦上為同一個文件,但是生成的 meta 文件中的 uuid 都不相同。

這種情況下,后面進(jìn)行資源提交或更新的人,肯定也會遇到?jīng)_突,如果不明就理就強(qiáng)行解決沖突,就會產(chǎn)生上面所說的問題。下面的時序圖就描述了這種錯誤的工作流程:

因?yàn)榈谝粋€ A 同學(xué)忘記生成 meta 文件并提交,之后其他人都編輯過項(xiàng)目,但每個人生成的 uuid 都不同,這樣就會陷入無限的資源出錯中,編輯好的東西,一提交更新又出現(xiàn)沖突了。

要解決這個問題注意下面幾點(diǎn):

l 提交前檢查是否有新增文件,有新增文件時,注意是否有 meta 文件,需要一起提交;

l 拉取文件時,注意是否有新增文件,并且是有 meta 文件成對,如果沒有的話,提醒之前提交文件的同學(xué),把 meta 文件一并提交;

l 提交時,如果發(fā)現(xiàn)只有新增的 meta 文件,那這個 meta 文件肯定是自己生成的,需要注意是否使用過這個 meta 文件對應(yīng)的資源(同名文件)。如果沒用過,那請最早提交者把 meta 文件提交了。千萬不能將這個 meta 文件提交上去。

注意上面幾點(diǎn)基本上就可以杜絕 meta 文件 uuid 變化導(dǎo)致的工程出錯了。

小結(jié)

meta 文件是 Creator 用于資源管理的重要手段,但在多人協(xié)同開發(fā)中稍有不慎就容易產(chǎn)生資源錯誤。要解決這個問題,不僅需要理解 meta 文件的產(chǎn)生機(jī)制和導(dǎo)致沖突的原因,同時還應(yīng)該規(guī)范資源提交流程。

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

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

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