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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...