我們通過Dashboard 創(chuàng)建一個2d項目,來演示CocosCreator 的項目結(jié)構(gòu)。
等待創(chuàng)建完成后,會得到以下項目工程:
一、assets文件夾
assets文件夾:為資源目錄,用來存儲所有的本地資源,如各種圖片,腳本資源。
只有在這個目錄下的內(nèi)容才會顯示在cocos編輯器的資源管理器中。
其中非常重要的一點,assets 中每個文件在導(dǎo)入后都會生成一個和文件同名的.meta 文件。
1、meta 文件的作用
理解 meta 文件的作用和更新時機,對于我們在解決資源沖突、文件丟失、組件屬性丟失等問題時,有非常重要的意義。
例如,我們在cocos 編輯器的資源管理器中,創(chuàng)建一個名字為script 的文件夾, 用于存儲腳本文件。
創(chuàng)建完成后得到會生成一個和文件同名的script.meta 文件:
script.meta 文件內(nèi)容:
包含 ver (版本)、 uuid(唯一id) 、importer (資源類型)等參數(shù)。
我們再來導(dǎo)入一張圖片資源:
圖片資源生成的meta文件內(nèi)容比較多,除了基本的 ver
和 uuid
等信息外,還記錄了圖片的尺寸、偏移、九宮格等數(shù)據(jù)。
如下:
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4",
"files": [
".jpg",
".json"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@6c48a",
"displayName": "20230816090210",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@f9941",
"displayName": "20230816090210",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 900,
"height": 1100,
"rawWidth": 900,
"rawHeight": 1100,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-450,
-550,
0,
450,
-550,
0,
-450,
550,
0,
450,
550,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
1100,
900,
1100,
0,
0,
900,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-450,
-550,
0
],
"maxPos": [
450,
550,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": false,
"redirect": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@f9941"
}
}
上面這么多信息中,我們只需要關(guān)心:UUID
UUID 是每個文件唯一的 id,Creator 引擎通過 UUID 來引用文件, 實現(xiàn)游戲資源管理。
2、.meta 文件更新時機
(1)、打開工程時
打開工程時,Creator 會先掃描 assets 目錄,如果哪個文件還沒有 meta 文件,此時就會生成。
(2)、更新資源時
- 在資源管理器中對資源進(jìn)行文件名修改、改變目錄、添加文件、刪除文件時。
- 在操作系統(tǒng)的文件管理器中對 assets 目錄中的文件進(jìn)行增、刪、改后,切換到編輯器界面時。
? 如果一個文件或者目錄的 meta 文件不存在,上面兩種情況都會觸發(fā)引擎去生成新的meta 文件。
3、.meta 文件出錯時的解決辦法
(1)、UUID 發(fā)生變化問題
這種情況,一般在多人協(xié)作時,經(jīng)常會出現(xiàn)。 當(dāng)UUID 發(fā)生變化,會使舊的 UUID 對應(yīng)的資源無法找到, 編輯的界面會出現(xiàn)資源、圖片丟失,還可能出現(xiàn)組件屬性丟失的情況。
如圖:
UUID 發(fā)生變化原因:
前面一個人將新資源添加進(jìn)項目,忘記切換到編輯器界面使其生成 meta 文件,同時又將新增的文件提交到了版本管理中(不包含 meta 文件)。
后面另一個人,去更新了前面一個人所提交的資源,同時切換到了編輯器界面進(jìn)行編輯, Creator 會檢查到新資源沒有 meta 文件便會立即生成。
當(dāng)?shù)谝粋€人切換到編輯器的時候也會生成 meta 文件,這樣兩個人的電腦上為同一個文件,但是生成的 meta 文件中的 UUID 都不相同。
這樣后面進(jìn)行資源提交或更新的人,肯定也會遇到?jīng)_突。
UUID 發(fā)生變化的解決辦法和注意事項:
- 提交前檢查是否有新增文件,有新增文件時,注意是否有 meta 文件,沒有meta 文件 一定要重新打開cocos 編輯器,生成新的meta文件,然后再一起提交。
- 提交時如果發(fā)現(xiàn)只有新增的 meta 文件,那這個 meta 文件肯定是自己生成的,需要查看是否使用過這個 meta 文件對應(yīng)的資源。如果沒用過,那請最早提交者把 meta 文件提交了。此時千萬不能將這個 meta 文件提交上去。**
- 拉取文件時,注意是否有新增文件,并且是有 meta 文件成對,如果沒有的話,提醒之前文件提交者,把 meta 文件一并提交。
(2)、UUID 沖突問題
UUID 是全局唯一的,產(chǎn)生沖突肯定是有不同的文件的 UUID 相同了,一旦出現(xiàn)這個問題,會導(dǎo)致 Cocos Creator 資源管理器目錄結(jié)構(gòu)加載不完整。
UUID 沖突問題原因:UUID 沖突一般是誤操作引起。
比如在操作系統(tǒng)的文件管理器中移動文件時,將剪切、粘貼不小心操作成了復(fù)制、粘貼,同時也把 meta 文件復(fù)制過去了。導(dǎo)致項目中同時出現(xiàn)兩個相同的 meta 文件。
?
從上圖提示中可以看到?jīng)_突的 UUID 字符串。
UUID 沖突解決辦法:
第一步,打開操作系統(tǒng)文件管理或代碼編輯器,搜索沖突的UUID,如圖:
第二步,關(guān)閉Cocos Creator 編輯器,然后任意刪除其中一個 meta 文件。
第三步,再重新打開 Creator 編輯器即可解決。
第四步,雖然通過上面三步,解決了目錄結(jié)構(gòu)加載不完整的問題。但是編輯器引用到這個資源的地方就會出現(xiàn)資源丟失,所以還得需要重新編輯或者重新配置一次資源。
為了避免 UUID 沖突發(fā)生,最好在引擎資源管理工具中進(jìn)行添加、移動文件。
二、library文件夾
library
是將 assets
中的資源導(dǎo)入后生成的,這里文件的結(jié)構(gòu)和資源的格式將被處理成最終游戲發(fā)布時需要的形式。
當(dāng) library
丟失或損壞的時候,只要刪除整個 library
文件夾再打開項目,就會重新生成資源庫。
三、構(gòu)建目標(biāo)(build)
在使用編輯器主菜單中的 項目 -> 構(gòu)建發(fā)布 使用默認(rèn)發(fā)布路徑發(fā)布項目后,編輯器會在項目路徑下創(chuàng)建 build
目錄,并存放所有目標(biāo)平臺的構(gòu)建工程。
例如,我們構(gòu)建一個 web手機端的工程。
四、編輯器配置目錄(profiles)
profiles
文件夾中包含編輯器的配置信息,包括各目標(biāo)平臺的構(gòu)建配置信息、場景配置信息等

五、項目設(shè)置目錄(settings)
settings 文件夾保存項目相關(guān)的設(shè)置,如項目設(shè)置面板中的配置信息。
六、臨時文件夾(temp)
temp
顧名思義,是臨時文件夾,用于緩存 Cocos Creator 在本地的臨時數(shù)據(jù)文件,可在關(guān)閉 Cocos Creator 后手動刪除。
七、package.json
package.json
文件和 assets
文件夾一起,是驗證 Cocos Creator 項目合法性的標(biāo)志,只有包括了這兩個內(nèi)容的文件夾才能作為 Cocos Creator 項目打開。
八、tsconfig.json
tsconfig.json 文件,我們在前面在介紹vs code 配置api 智能提示時已經(jīng)接觸過了。
九、擴展插件文件夾(extensions)
extensions
文件夾用于存放項目的自定義擴展插件。如需卸載擴展插件,在 extensions
中刪除對應(yīng)的文件夾即可。
文章來源:http://www.zghlxwxcb.cn/news/detail-694242.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-694242.html
到了這里,關(guān)于CocosCreator3.8研究筆記(三)CocosCreator 項目結(jié)構(gòu)說明及編輯器的簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!