一鳄抒、 項目文件夾結構
初次創(chuàng)建并打開一個 Cocos Creator 項目后,開發(fā)者的項目文件夾將會包括以下結構:
1. 資源文件夾(assets)
assets 將會用來放置游戲中所有的本地資源椰弊、腳本和第三方庫文件许溅。只有在 assets 目錄下的內容才能顯示在 資源管理器 中。assets 中的每個文件在導入項目后都會生成一個相同名字的 .meta 文件秉版,用于存儲對應的資源配置和索引信息贤重。.meta 文件需要一并提交到版本控制系統(tǒng),詳見 資源管理注意事項 --- meta 文件清焕。
2. 資源庫(library)
library 是將 assets 中的資源導入后生成的游桩,在這里文件的結構和資源的格式將被處理成最終游戲發(fā)布時需要的形式牲迫。
當 library 丟失或損壞的時候,只要刪除整個 library 文件夾再打開項目借卧,就會重新生成資源庫盹憎。
3. 本地設置(local)
local 文件夾中包含該項目的本機上的配置信息,包括編輯器面板布局铐刘,窗口大小陪每,位置等信息。開發(fā)者不需要關心這里的內容镰吵。
4. 擴展插件文件夾(packages)
packages 文件夾用于放置此項目的自定義擴展插件檩禾。如需手動安裝擴展插件,可以手動創(chuàng)建此文件夾疤祭。如需卸載擴展插件盼产,在 packages 中刪除對應的文件夾即可。
5. 項目設置(settings)
settings 里保存項目相關的設置勺馆,如 構建發(fā)布 菜單里的包名戏售、場景和平臺選擇等。
6. 臨時文件夾(temp)
temp 是臨時文件夾草穆,用于緩存一些 Cocos Creator 在本地的臨時文件灌灾。這個文件夾可以在關閉 Cocos Creator 后手動刪除,開發(fā)者不需要關心這里面的內容悲柱。
7. project.json
project.json 文件和 assets 文件夾一起锋喜,作為驗證 Cocos Creator 項目合法性的標志,只有包括了這兩個內容的文件夾才能作為 Cocos Creator 項目打開豌鸡。開發(fā)者不需要關心里面的內容嘿般。
8. 構建目標(build)
在使用主菜單中的 項目 -> 構建發(fā)布... 使用默認發(fā)布路徑發(fā)布項目后,編輯器會在項目路徑下創(chuàng)建 build 目錄涯冠,并存放所有目標平臺的構建工程炉奴。點擊鏈接加入群聊【Unity/Cocos交流群】
9. 版本控制
Cocos Creator 在新建項目時,會自動生成 .gitignore 文件功偿,用于排除不應該提交到 git 倉庫的文件盆佣。如果開發(fā)者使用其它版本控制系統(tǒng),或者需要提交項目到其它地方械荷,應該注意只需要提交 assets共耍、packages、settings吨瞎、project.json痹兜,或其它手動添加的關聯文件。
二颤诀、 資源管理注意事項 --- meta 文件
理解 Creator 生成 meta 文件的作用和機理字旭,能幫助您和您的團隊解決在多人開發(fā)時常會遇到的資源沖突对湃、文件丟失、組件屬性丟失等問題遗淳。那 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、更新資源時
更新資源也會引發(fā) meta 文件的更新:
在 資源管理器 中可以對資源進行文件名修改扮宠、改變目錄西乖、刪除文件,添加文件等操作坛增,請參考 資源管理器获雕。也可以直接從桌面或操作系統(tǒng)的文件管理器中將文件拖入到【資源管理器】中。
還有一種情況是在操作系統(tǒng)的文件管理器中對 assets 目錄中的文件進行增收捣、刪届案、改之后切換到編輯器界面,此時可以看到 資源管理器 刷新的過程罢艾。點擊鏈接加入群聊【Unity/Cocos交流群】
如果一個文件的 meta 文件不存在楣颠,上面兩種情況都會觸發(fā)引擎去生成 meta 文件尽纽。
3. meta 文件出錯的幾種情況及解決方法
下面我們分析下 meta 文件出錯的幾種可能情況。
uuid 沖突
uuid 是全局唯一的童漩,產生沖突肯定是有不同的文件的 uuid 相同了弄贿,一旦出現這個問題會導致 Cocos Creator 資源管理器目錄結構加載不完整。如下圖所示矫膨,遇到這種情況估計會讓你嚇出一身冷汗:
從提示中可以看到沖突的 uuid 字符串挎春,然后打開操作系統(tǒng)文件管理或代碼編輯器,搜索這個 uuid:
此時先關閉 Creator 編輯器豆拨,再任意刪除其中一個 meta 文件直奋,然后再打開 Creator 編輯器就可以解決。
這種方法雖然可以解決問題施禾,但在編輯器中引用到這個資源的地方將會出現資源丟失脚线,需要重新編輯或者重新配置一次。最好是通過版本管理工具還原此 meta 文件弥搞。
出現這種問題的原因一般有以下兩個:
在操作系統(tǒng)的文件管理器中移動文件時邮绿,將剪切、粘貼不小心操作成了復制攀例、粘貼船逮,同時也把 meta 文件復制過去了。導致項目中同時出現兩個相同的 meta 文件粤铭。
在多人協作時挖胃,從版本管理工具中,更新資源時碰巧遇到別人生成的 uuid 與你的電腦上某個文件生成的 uuid 一樣了梆惯,但這種情況非常非常罕見酱鸭。
總的來說,要減少 uuid 沖突發(fā)生垛吗,最好在引擎資源管理工具中進行添加凹髓、移動文件。
uuid 變化
還有一種情況是 uuid 變了怯屉,使得舊的 uuid 對應的資源無法找到蔚舀,這樣的話,你曾經編輯的界面將會出現資源锨络、圖片丟失赌躺,還可能出現組件屬性丟失。
如果找不到舊的 uuid 對應的資源足删,通過 控制臺 可以看到 Creator 給出了所在的場景文件名寿谴、節(jié)點路徑、組件失受、uuid 等非常詳細的警告信息讶泰。通過警告信息可以快速定位出錯的地方咏瑟。
這種情況又是怎么造成的呢?當有一個人將新資源添加進項目時痪署,忘記切換到編輯器界面使其生成 meta 文件码泞,同時又將這些新增的文件提交到了版本管理中(不包含 meta 文件)。然后狼犯,有另一個人去更新了他所提交的資源余寥,同時切換到了編輯器界面進行編輯,這時 Creator 會檢查到新資源沒有 meta 文件便會立即生成悯森。而當第一個人切換到編輯器的時候也會生成 meta 文件宋舷,這樣兩個人的電腦上為同一個文件,但是生成的 meta 文件中的 uuid 都不相同瓢姻。
這種情況下祝蝠,后面進行資源提交或更新的人,肯定也會遇到沖突幻碱,如果不明就理就強行解決沖突绎狭,就會產生上面所說的問題。下面的時序圖就描述了這種錯誤的工作流程:
因為第一個 A 同學忘記生成 meta 文件并提交褥傍,之后其他人都編輯過項目儡嘶,但每個人生成的 uuid 都不同,這樣就會陷入無限的資源出錯中恍风,編輯好的東西蹦狂,一提交更新又出現沖突了。
要解決這個問題注意下面幾點:
l 提交前檢查是否有新增文件邻耕,有新增文件時鸥咖,注意是否有 meta 文件燕鸽,需要一起提交兄世;
l 拉取文件時,注意是否有新增文件啊研,并且是有 meta 文件成對御滩,如果沒有的話,提醒之前提交文件的同學党远,把 meta 文件一并提交削解;
l 提交時,如果發(fā)現只有新增的 meta 文件沟娱,那這個 meta 文件肯定是自己生成的氛驮,需要注意是否使用過這個 meta 文件對應的資源(同名文件)。如果沒用過济似,那請最早提交者把 meta 文件提交了矫废。千萬不能將這個 meta 文件提交上去盏缤。
注意上面幾點基本上就可以杜絕 meta 文件 uuid 變化導致的工程出錯了。
小結
meta 文件是 Creator 用于資源管理的重要手段蓖扑,但在多人協同開發(fā)中稍有不慎就容易產生資源錯誤唉铜。要解決這個問題,不僅需要理解 meta 文件的產生機制和導致沖突的原因律杠,同時還應該規(guī)范資源提交流程潭流。