背景介紹
Accelerator(Cache Server)作為團隊項目協作的資產緩存加速器,專用于存儲資產導入緩存(Library/Artifacts)和著色器緩存(Library/ShaderCache),實現了資產緩存的共享分發,有效避免了團隊成員重復導入資產。
詳情請參考:
https://docs.unity.cn/cn/tuanjiemanual/Manual/UnityAccelerator.html
以前的 Cache Server 架構下,用戶反饋的核心問題包括:
打開項目需要下載全量資產緩存,缺少按需下載能力;
上傳本地資產緩存必須重新導入資產,缺少導入和上傳解耦設計;
服務器資產緩存持續膨脹,缺少服務器資產緩存清理接口;
資產緩存的傳輸管理單一,缺失細粒度資產緩存管理接口;
團結引擎圍繞上述問題,新增 Cache Server APIs 和 Lazy Download(按需下載)特性。
Lazy Download 新特性(按需下載)
在以前的 Cache Server 架構下,打開項目需要下載全量資產緩存,項目首次打開時長會受到網絡波動的影響并且全量的資產緩存會占用大量磁盤空間 。對此,團結引擎新增 Lazy Download 功能,實現了按需下載——項目首次啟動僅下載運行時必要資產,非必要資產可選擇后臺下載。
在某中度游戲項目的實際測試中,首次打開項目的必要資產緩存由以前的 18.7GB 大幅降低至 95.8MB,下載量減少了 99.5%,項目首次打開速度提升數倍。
用法速覽
1.命令行啟動方式,如下表所示;
Lazy Download Mode
用法
Disabled
不開啟
Lazy Download,這是系統默認選項,此時在用戶開啟項目時,會下載所有資產緩存。
支持命令行參數設置,`-cacheServerLazyDownloadMode 0`Lazy Download
開啟 Lazy Download,此時在用戶開啟項目時,只會下載部分資產緩存,其它資產緩存會在使用該資產時被下載。
支持命令行參數設置`-cacheServerLazyDownloadMode 1`Lazy Download And Background Download
在開啟Lazy Download的同時,也支持 Background Download,即在進入項目后,后臺下載其余資產緩存。
支持命令行參數設置`-cacheServerLazyDownloadMode 2`2.UI界面啟動方式:
在Project Settings (Editor->CacheServer->Download),如下圖所示;
CacheServer->Download),如下圖所示;"},"attribs":{"0":"*0+2*1+1k*0+1*1+6"}},"apool":{"numToAttrib":{"0":["author","7211125165588021250"],"1":["author","7251896964022157313"]},"nextNum":2}},"type":"ordered","referenceRecordMap":{},"extra":{"channel":"saas","isEqualBlockSelection":true,"pasteRandomId":"da042fad-51cd-4305-8a3c-bc6a80648a01","mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":24,"type":"text","selection":{"start":0,"end":65},"recordId":"I3VmdoW1AoLDJtxiWK6ckH9HnGb"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text">
![]()
Cache Server 接口更新
緩存上傳
在以前的 Cache Server 架構下,資產緩存的傳輸管理單一,用戶只能設置全局開關,缺乏細粒度資產緩存的傳輸管理能力;資產的導入和上傳耦合,用戶只能通過觸發資產導入實現資產緩存上傳。
針對上述問題,團結引擎新增資產緩存上傳接口
CacheServer.UploadArtifacts(),通過該接口用戶可以上傳特定的資產緩存及其修訂版本,避免資產重復導入。
用法速覽
void UploadArtifacts(GUID[] guids, bool uploadAllRevisions = false, bool force = false)如上所示,
CacheServer.UploadArtifacts()接受三個參數:
1. GUID[] guids:
指定需要上傳的資產緩存。數組為空時,上傳全部資產緩存。
2. bool uploadAllRevisions:
控制是否上傳所有歷史修訂版本。true:上傳所有版本;false:僅上傳當前主版本。
3. bool force:
控制是否強制上傳,當Project Settings (Editor->CacheServer->Upload)中未啟用自動上傳時,強制覆蓋該設置。
Quick Start
緩存延遲上傳
團結引擎新增
CacheServer.DelayUpload()接口,可用于
OnPostprocessAllAssets
()
回調完畢之后上傳資產緩存,或在關閉編輯器時上傳資產緩存。該接口保證了資產緩存經過完整的后處理流程之后再上傳,有效規避了半成品資產緩存污染服務器資產緩存的風險。用法速覽
void DelayUpload(GUID[] guids, bool immediate = true)如上所示,
CacheServer.DelayUpload()接受兩個參數:
1.GUID[] guids:
需要上傳到緩存服務器的資產GUID數組。
2.bool immediate:
控制是否立即上傳。
immediate = true:OnPostprocessAllAssets 完成后立即上傳;反之,編輯器關閉時上傳所有持久化資產緩存。
Quick Start
}服務器緩存清理
由于之前的 Cache Server 未提供服務器資產緩存清理接口,服務器資產緩存會隨著項目迭代持續增長。針對這一問題,團結引擎新增了
CacheServer.DeleteArtifacts()接口,該接口可以刪除異常或無用的服務器資產緩存,減少無效資產緩存污染,避免由于平臺切換產生的冗余資產緩存堆積。
注意:該方法只刪除服務器側資產緩存,不會對本地資產及緩存做任何修改。
用法速覽
bool DeleteArtifacts(GUID[] guids, bool deleteAllRevisions = false)如上所示,
CacheServer.DeleteArtifacts()接受兩個參數:
1.GUID[] guids:
指定需要刪除的資產,支持一個或多個 asset 的 GUID。
2.bool uploadAllRevisions:
控制是否刪除所有歷史修訂版本。與
CacheServer.DeleteArtifacts()接口中的 uploadAllRevisions 含義一致,默認值為 false。
Quick Start
}未來規劃
完善前端頁面,滿足開發者對 Cache Server 中資產緩存的精細化管理。
結合資產方案 Instant Asset,推出資產免構建一體化服務,極大提升開發者項目開發周期的效率。
結合團結 Asset Manager,實現對項目資產的在線預覽、審核及管理服務, Asset Manager 詳情參考:
https://assetmanager.unity.cn/
Unity 官方微信
第一時間了解Unity引擎動向,學習進階開發技能
每一個“點贊”、“在看”,都是我們前進的動力

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.