詳解CocosCreator項目結構機制
一、項目文件夾結構
初次創建並打開一個 Cocos Creator 項目後,開發者的項目文件夾將會包括以下結構:
下面我們將會介紹每個文件夾的功能。
1.資源文件夾(assets)
assets 將會用來放置遊戲中所有的本地資源、腳本和第三方庫文件。隻有在 assets 目錄下的內容才能顯示在 資源管理器 中。assets 中的每個文件在導入項目後都會生成一個相同名字的 .meta 文件,用於存儲對應的資源配置和索引信息。.meta 文件需要一並提交到版本控制系統,詳見 資源管理註意事項 — meta 文件。
一些第三方工具生成的工程或設計原文件,如 TexturePacker 的 .tps 文件,或 Photoshop 的 .psd 文件,可以選擇放在 assets 外面來管理。
2.資源庫(library)
library 是將 assets 中的資源導入後生成的,在這裡文件的結構和資源的格式將被處理成最終遊戲發佈時需要的形式。當 library 丟失或損壞的時候,隻要刪除整個 library 文件夾再打開項目,就會重新生成資源庫。
3.本地設置(local)
local 文件夾中包含該項目的本機上的配置信息,包括編輯器面板佈局,窗口大小,位置等信息。開發者不需要關心這裡的內容。
4.擴展插件文件夾(packages)
packages 文件夾用於放置此項目的自定義擴展插件。如需手動安裝擴展插件,可以手動創建此文件夾。如需卸載擴展插件,在 packages 中刪除對應的文件夾即可。
5.項目設置(settings)
settings 裡保存項目相關的設置,如 構建發佈 菜單裡的包名、場景和平臺選擇等。
6.臨時文件夾(temp)
temp 是臨時文件夾,用於緩存一些 Cocos Creator 在本地的臨時文件。這個文件夾可以在關閉 Cocos Creator 後手動刪除,開發者不需要關心這裡面的內容。
7.project.json
project.json 文件和 assets 文件夾一起,作為驗證 Cocos Creator 項目合法性的標志,隻有包括瞭這兩個內容的文件夾才能作為 Cocos Creator 項目打開。開發者不需要關心裡面的內容。
8.構建目標(build)
在使用主菜單中的 項目 -> 構建發佈… 使用默認發佈路徑發佈項目後,編輯器會在項目路徑下創建 build 目錄,並存放所有目標平臺的構建工程。
9.版本控制
Cocos Creator 在新建項目時,會自動生成 .gitignore 文件,用於排除不應該提交到 git 倉庫的文件。如果開發者使用其它版本控制系統,或者需要提交項目到其它地方,應該註意隻需要提交 assets、packages、settings、project.json,或其它手動添加的關聯文件。
二、資源管理註意事項 — meta 文件
理解 Creator 生成 meta 文件的作用和機理,能幫助您和您的團隊解決在多人開發時常會遇到的資源沖突、文件丟失、組件屬性丟失等問題。那 meta 文件是做什麼用的呢?下面我們來瞭解一下。
1. meta 文件的作用
先來看下場景中的 meta 文件長什麼樣子:
預制件的 meta 文件與場景是一樣的。png 圖片的 meta 文件信息比較多,除瞭基本的 ver 和 uuid 外,還記錄瞭圖片的寬高、偏移、九宮格等數據。上面這麼多信息,我們這裡隻關心一個:uuid。uuid : 通用唯一標識符(Universally Unique Identifier) uuid 是 Creator 用來管理遊戲資源的。它會為每個文件分配一個唯一的 id,圖集會生成多個。由此可以瞭解在 Creator 引擎中,識別一個文件不是簡單地通過 路徑 + 文件名 定位,而是通過 uuid 來引用文件。因此可以在編輯器資源管理中,隨意刪除、移動文件。
2. meta 文件更新時機
Creator 生成 meta 文件有以下幾種情況:
1、打開工程時打開項目工程時,Creator 會先掃描 assets 目錄,如果哪個文件還沒有 meta 文件,此時就會生成。
2、更新資源時更新資源也會引發 meta 文件的更新:
在 資源管理器 中可以對資源進行文件名修改、改變目錄、刪除文件,添加文件等操作,請參考 資源管理器。也可以直接從桌面或操作系統的文件管理器中將文件拖入到【資源管理器】中。還有一種情況是在操作系統的文件管理器中對 assets 目錄中的文件進行增、刪、改之後切換到編輯器界面,此時可以看到 資源管理器 刷新的過程。如果一個文件的 meta 文件不存在,上面兩種情況都會觸發引擎去生成 meta 文件。
3. meta 文件出錯的幾種情況及解決方法下面我們分析下 meta 文件出錯的幾種可能情況。uuid 沖突 uuid 是全局唯一的,產生沖突肯定是有不同的文件的 uuid 相同瞭,一旦出現這個問題會導致 Cocos Creator 資源管理器目錄結構加載不完整。如下圖所示,遇到這種情況估計會讓你嚇出一身冷汗:
從提示中可以看到沖突的 uuid 字符串,然後打開操作系統文件管理或代碼編輯器,搜索這個 uuid:
此時先關閉 Creator 編輯器,再任意刪除其中一個 meta 文件,然後再打開 Creator 編輯器就可以解決。這種方法雖然可以解決問題,但在編輯器中引用到這個資源的地方將會出現資源丟失,需要重新編輯或者重新配置一次。最好是通過版本管理工具還原此 meta 文件。出現這種問題的原因一般有以下兩個:在操作系統的文件管理器中移動文件時,將剪切、粘貼不小心操作成瞭復制、粘貼,同時也把 meta 文件復制過去瞭。導致項目中同時出現兩個相同的 meta 文件。在多人協作時,從版本管理工具中,更新資源時碰巧遇到別人生成的 uuid 與你的電腦上某個文件生成的 uuid 一樣瞭,但這種情況非常非常罕見。總的來說,要減少 uuid 沖突發生,最好在引擎資源管理工具中進行添加、移動文件。
三、uuid 變化
還有一種情況是 uuid 變瞭,使得舊的 uuid 對應的資源無法找到,這樣的話,你曾經編輯的界面將會出現資源、圖片丟失,還可能出現組件屬性丟失。
如果找不到舊的 uuid 對應的資源,通過 控制臺 可以看到 Creator 給出瞭所在的場景文件名、節點路徑、組件、uuid 等非常詳細的警告信息。通過警告信息可以快速定位出錯的地方。這種情況又是怎麼造成的呢?當有一個人將新資源添加進項目時,忘記切換到編輯器界面使其生成 meta 文件,同時又將這些新增的文件提交到瞭版本管理中(不包含 meta 文件)。然後,有另一個人去更新瞭他所提交的資源,同時切換到瞭編輯器界面進行編輯,這時 Creator 會檢查到新資源沒有 meta 文件便會立即生成。而當第一個人切換到編輯器的時候也會生成 meta 文件,這樣兩個人的電腦上為同一個文件,但是生成的 meta 文件中的 uuid 都不相同。這種情況下,後面進行資源提交或更新的人,肯定也會遇到沖突,如果不明就理就強行解決沖突,就會產生上面所說的問題。下面的時序圖就描述瞭這種錯誤的工作流程:
因為第一個 A 同學忘記生成 meta 文件並提交,之後其他人都編輯過項目,但每個人生成的 uuid 都不同,這樣就會陷入無限的資源出錯中,編輯好的東西,一提交更新又出現沖突瞭。
要解決這個問題註意下面幾點:l提交前檢查是否有新增文件,有新增文件時,註意是否有 meta 文件,需要一起提交;l拉取文件時,註意是否有新增文件,並且是有 meta 文件成對,如果沒有的話,提醒之前提交文件的同學,把 meta 文件一並提交;l提交時,如果發現隻有新增的 meta 文件,那這個 meta 文件肯定是自己生成的,需要註意是否使用過這個 meta 文件對應的資源(同名文件)。如果沒用過,那請最早提交者把 meta 文件提交瞭。千萬不能將這個 meta 文件提交上去。註意上面幾點基本上就可以杜絕 meta 文件 uuid 變化導致的工程出錯瞭。
小結:meta 文件是 Creator 用於資源管理的重要手段,但在多人協同開發中稍有不慎就容易產生資源錯誤。要解決這個問題,不僅需要理解 meta 文件的產生機制和導致沖突的原因,同時還應該規范資源提交流程。
以上就是詳解CocosCreator項目結構機制的詳細內容,更多關於CocosCreator項目結構機制的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- None Found