[1]概述 [2]圖像資源 [3]預製資源 [4]圖集資源 [5]藝術數字資源 [6]字體資源 ...
前面的話
本文將詳細介紹 cocos 中的資源工作流程
概述
【同步性】
資源管理器中的資源和操作系統的文件管理器中看到的項目資源文件夾是同步的
在資源管理器中對資源的移動、重命名和刪除,都會直接在用戶的文件系統中對資源文件進行同步修改。同樣的,在文件系統中(如 Windows 上的 Explorer 或 Mac 上的 Finder)對添加或刪除資源,再次打開或激活 Cocos Creator 程式後,也會對資源管理器中的資源進行更新
【meda文件】
所有 assets 路徑下的資源都會在導入時生成一份資源配置文件(.meta),這份配置文件提供了該資源在項目中的唯一標識(uuid)以及其他的一些配置信息(如圖集中的小圖引用,貼圖資源的裁剪數據等),非常重要
在編輯器中管理資源時,meta 文件是不可見的,對資源的任意刪除、改名、移動操作,都會由編輯器自動同步相應的 meta 文件,確保 uuid 的引用不會丟失和錯亂
註意在編輯器外部的文件系統中(Explorer,Finder)對資源文件進行刪除、改名、移動時必須同步處理相應的 meta 文件。資源文件和其對應的 meta 文件應該保持在同一個目錄下,而且文件名相同
如果在編輯器外部的文件系統中(Explorer,Finder等)進行了資源文件的移動或重命名,而沒有同步移動或重命名 meta 文件時,會導致編輯器將改名或移動的資源當做新的資源導入,可能會出現場景和組件中對該資源(包括腳本)的引用丟失
在編輯器發現有未同步的資源配置文件時,會彈窗警告用戶,併列出所有不匹配的 meta 文件。這時無法正確匹配的資源配置文件會從項目資源路徑(asset)中移除,並自動備份到 temp
路徑下
如果希望恢復這些資源的引用,將備份的 meta 文件複製到已經移動過的資源文件同一路徑下,並保證資源文件和 meta 文件的文件名相同
註意編輯器在處理資源改名和移動時會生成新的 meta 文件,這些新生成的 meta 文件可以在恢復備份的 meta 後安全刪除
圖像資源
圖像資源經常被稱作貼圖、圖片,是游戲中絕大部分圖像渲染的數據源。圖像資源一般由圖像處理軟體(如 PS )製作而成並輸出成 Cocos Creator 可以使用的文件格式,目前包括 JPG 和 PNG 兩種
圖像資源在資源管理器中以自身圖片的縮略圖作為圖標。在資源管理器中選中圖像資源後,屬性檢查器下方會顯示該圖片的縮略圖
【SpriteFrame】
在資源管理器中,圖像資源的左邊會顯示一個和文件夾類似的三角圖標,點擊就可以展開看到它的子資源(sub asset),每個圖像資源導入後編輯器會自動在它下麵創建同名的 SpriteFrame 資源
SpriteFrame 是核心渲染組件 Sprite 所使用的資源,設置或替換 Sprite 組件中的 spriteFrame
屬性,就可以切換顯示的圖像
為什麼會有 SpriteFrame 這種資源?這樣的設置是因為除了每個文件產生一個 SpriteFrame 的圖像資源(Texture)之外,還有包含多個 SpriteFrame 的圖集資源(Atlas)類型
直接將 SpriteFrame 或圖像資源從資源管理器中拖拽到層級管理器或場景編輯器中,就可以直接用所選的圖像在場景中創建 Sprite 節點。之後可以拖拽其他的 SpriteFrame 或圖像資源到該 Sprite 組件的 Sprite Frame
屬性欄中,來切換該 Sprite 顯示的圖像
導入圖像資源後生成的 SpriteFrame 會進行自動剪裁,去除原始圖片周圍的透明像素區域。這樣在使用 SpriteFrame 渲染 Sprite 時,將會獲得有效圖像更精確的大小
預製資源
在場景中編輯好節點後,直接將節點從層級管理器拖到資源管理器,即可創建出一個預製(prefab)
在場景中修改了預製實例後,在屬性檢查器中直接點擊保存,即可保存對應的預製資源
在場景中修改了預製實例後,在屬性檢查器中直接點擊回退,即可將預製對象還原為資源中的狀態
每個場景中的預製實例都可以選擇要自動同步和還是手動同步。設為手動同步時,當預製對應的原始資源被修改後,場景中的預製實例不會同步刷新,只有在用戶手動還原預製時才會刷新;設為自動同步時,該預製實例會自動和原始資源保持同步
圖集資源
圖集(Atlas)也稱作 Sprite Sheet,是游戲開發中常見的一種美術資源。圖集是通過專門的工具將多張圖片合併成一張大圖,並通過 plist 等格式的文件索引的資源。可供 Cocos Creator 使用的圖集資源由 plist 和 png 文件組成
在游戲中使用多張圖片合成的圖集作為美術資源,有以下優勢:
1、合成圖集時會去除每張圖片周圍的空白區域,加上可以在整體上實施各種優化演算法,合成圖集後可以大大減少游戲包體和記憶體占用
2、多個 Sprite 如果渲染的是來自同一張圖集的圖片時,這些 Sprite 可以使用同一個渲染批次來處理,大大減少 CPU 的運算時間,提高運行效率
要生成圖集,首先應該準備好一組原始圖片,接下來可以使用專門的軟體(texturepacker 或者 Zwoptex)生成圖集,使用這些軟體生成圖集時選擇 cocos2d-x 格式的 plist 文件。最終得到的圖集文件是同名的 plist 和 png,將 plist 和 png 文件同時拖拽到資源管理器中,就可以生成可以在編輯器和腳本中使用的圖集資源了
【自動圖集】
自動圖集資源是 Cocos Creator 自帶的合圖功能,可以將指定的一系列碎圖打包成一張大圖,在資源管理器中右鍵,可以在如下菜單中找到 新建 -> 自動圖集配置 的子菜單,點擊菜單將會新建一個類似 AutoAtlas.pac 的資源,自動圖集資源將會以當前文件夾下的所有 SpriteFrame 作為碎圖資源。 如果碎圖資源 SpriteFrame 有進行配置過,在打包後重新生成的 SpriteFrame 將會保留這些配置
藝術數字資源
藝術數字資源是一種用戶自定義的資源,它可以用來配置藝術數字字體的屬性。在資源管理器中右鍵,可以在如下菜單中找到 新建 -> 藝術數字配置 的子菜單,點擊菜單將會新建一個類似 LabelAtlas.labelatlas 的資源。藝術數字資源在使用之前需要進行一些配置,比如關聯渲染的圖片資源,設置每一個字元的寬高和起始字元信息
在資源管理器中選中一個藝術數字資源後,屬性檢查器面板將會顯示藝術數字資源的所有可配置項,配置完成後需要點擊屬性檢查器右上角的綠色的打勾按鈕來保存設置
使用藝術數字資源非常簡單,只需要新建一個 Label 組件,然後把新建好的藝術數字資源拖到 Label 組件的 Font 屬性即可
字體資源
使用 Cocos Creator 製作的游戲中可以使用三類字體資源:系統字體,動態字體和點陣圖字體
系統字體是通過調用游戲運行平臺自帶的系統字體來渲染文字,不需要用戶在項目中添加任何相關資源。要使用系統字體,需要使用Label組件中的 Use System Font 屬性
目前 Cocos Creator 支持 TTF 格式的動態字體。只要將擴展名為 TTF 的字體文件拖拽到資源管理器中,即可完成字體資源的導入
點陣圖字體由 fnt 格式的字體文件和一張 png 圖片組成,fnt 文件提供了對每一個字元小圖的索引。這種格式的字體可以由專門的軟體生成
在導入點陣圖字體時,需要將 fnt 文件和 png 文件同時拖拽到資源管理器中
字體資源需要通過 Label 組件來渲染,在層級管理器中點擊左上角的創建節點按鈕,並選擇創建渲染節點/Label(文字)
,就會在場景中創建出一個帶有 Label 組件的節點。也可以通過主菜單的節點/創建渲染節點/Label(文字)
來完成創建,效果一樣
字體組件預設使用系統字體作為關聯的資源,如果想要使用導入到項目中的 TTF 或點陣圖字體,可以將字體資源拖拽到創建的 Label 組件中的 File
屬性欄中
可以根據項目需要,自由的切換同一個 Label 組件的 File
屬性,來使用 TTF 或點陣圖字體。切換字體文件時,Label 組件的其他屬性不受影響
如果要恢復使用系統字體,可以點擊 Use System Font
的屬性覆選框,來清除 File
屬性中指定的字體文件