cocos 資源工作流程

来源:https://www.cnblogs.com/xiaohuochai/archive/2018/07/30/9368318.html
-Advertisement-
Play Games

[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 屬性中指定的字體文件

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ios的viewcontroller生命周期是 init -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidAppear -> viewDidUnload -> d ...
  • Preface Android中,Client測量和計算佈局,SurfaceFlienger(server)用來渲染繪製界面,client和server的是通過匿名共用記憶體(SharedClient)通信。 每個應用和SurfaceFlienger之間都會創建一個SharedClient,一個Sha ...
  • 一,效果圖。 二,代碼。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Todo</title> <meta name="viewport" content="initial-scale=1, maximum-scale=1, ...
  • 本文講述JavaScript中類繼承的實現方式,並比較實現方式的差異。 一、何為繼承 繼承,是子類繼承父類的特征和行為,使得子類對象具有父類的實例域和方法。 繼承是面向對象編程中,不可或缺的一部分。 1.1 優點 父類可以為子類提供通用的屬性,而不必因為增加功能,而逐個修改子類的屬性 同上 子類在父 ...
  • React路由 React推了兩個版本 一個是react-router 一個是react-router-dom 個人建議使用第二個 因為他多了一個Link組件 Npm install react-router-dom 1.引入 上邊兩種方法都行,需要註意的是第二種,下邊的便簽的寫成<HashRout ...
  • 23:01:17 react腳手架搭建 (個人用的是webstorm,所以分享下webstorm中的創建react腳手架項目的方法) 1.創建新項目(前提是下載nodejs環境) 2.下載好在webstorm中右鍵自己創建的項目目錄,菜單中會出現一個命令行工具,點進去 然後 npm start 開啟 ...
  • 1.react 組件創建 首先要引入以下三個庫: react.min.js - React 的核心庫 react-dom.min.js - 提供與 DOM 相關的功能 babel.min.js - Babel 可以將 ES6 代碼轉為 ES5 代碼,這樣我們就能在目前不支持 ES6 瀏覽器上執行 R ...
  • 表格 表格由 <table> 標簽來定義。 每個表格均有若幹行(由 <tr> 標簽定義),每行被分割為若幹單元格(由 <td> 標簽定義)。 字母 td 指表格數據(table data),即數據單元格的內容。 數據單元格可以包含文本、圖片、列表、段落、表單、水平線、表格等等。 例如,要畫出如下表格 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...