Unity Addressable使用之檢測更新流程

補充知識

關鍵文件說明

Addressable打包后會生成多種文件,主要包括?.hash.json??.bundle?文件,它們各自有不同的作用。

.hash 文件(哈希文件)

作用

  • 用于 版本對比,檢查資源是否有更新。
  • 存儲的是 資源目錄(Catalog)的哈希值,客戶端在初始化時對比本地和遠程的 .hash 文件,判斷是否需要更新資源。

特點

  • 文件很小,只包含一個哈希字符串(如 SHA-256)。
  • 每次構建 Addressables 時都會重新生成,確保唯一性。
  • 用于 增量更新,避免重復下載未變化的資源。

.json 文件(資源目錄文件)

作用

  • 存儲 資源的元數據,包括:
    • 所有可尋址資源的 Key(如 "Assets/Prefabs/Player.prefab")
    • 資源的 依賴關系
    • 資源所在的 AssetBundle 名稱
    • 資源的 加載路徑(遠程 URL 或本地路徑)文件名示例

特點

  • 是 Addressables 系統的 核心索引文件,客戶端必須先加載它才能正確加載資源。
  • 如果遠程 .hash 不同,客戶端會下載新的 .json 文件,并對比哪些資源需要更新。

.bundle 文件(AssetBundle 文件)

作用

  • 存儲 實際的資源數據(如 Prefab、Texture、Scene 等)。
  • 每個 .bundle 文件可能包含 多個資源(取決于 Addressables 的打包策略)。

特點

  • 采用 Unity 的 AssetBundle 壓縮格式(LZMA/LZ4/Uncompressed)。
  • 客戶端在加載資源時,會根據 .json 文件的索引找到對應的 .bundle 文件并加載。
  • 可以按需下載,減少初始包體大小。

文件之間的關系

  1. .hash → 告訴客戶端是否需要更新。
  2. .json → 告訴客戶端資源在哪里、如何加載。
  3. .bundle → 實際存儲資源數據。

這些文件共同構成了 Addressables 的 資源管理機制,使得 熱更新(Hot Update)按需加載 成為可能。

檢測更新流程

1、初始化 Addressables 系統

2、檢查內容更新狀態

3、獲取需要下載的大小

4、執行資源下載

5、完成更新

細節流程

  1. 客戶端啟動,檢查 catalog.hash 是否與服務器一致。
  2. 如果不一致,下載新的 catalog.json
  3. 對比新舊 catalog.json,找出需要更新的 .bundle 文件。
  4. 下載新增或修改的 .bundle 文件。

void Start()
{keys = new List<object>();StartCoroutine(AAInit());
}IEnumerator AAInit()
{//第一步  Addressable模塊初始化var initialLogic = Addressables.InitializeAsync(false);yield return initialLogic;//第二步 檢查Catalog是否有更新var catalogLogic = Addressables.CheckForCatalogUpdates(false);yield return catalogLogic;if (catalogLogic.Status == AsyncOperationStatus.Succeeded){var catalogs = catalogLogic.Result;if(catalogs != null && catalogs.Count > 0){Debug.Log($"發現{catalogs.Count}個更新  更新內容:{string.Join("\n",catalogs)}");// 更新catalogvar updateHandle = Addressables.UpdateCatalogs(catalogs,false);yield return updateHandle;var locatorList = updateHandle.Result;//待下載列表foreach(var locator in locatorList){keys.Clear();keys.AddRange(locator.Keys);//獲取需要下載的內容大小var getDownLoadSize = Addressables.GetDownloadSizeAsync(keys);Debug.Log(getDownLoadSize.Result);if (getDownLoadSize.Result > 0){// 執行資源下載var downLoadData =Addressables.DownloadDependenciesAsync(keys, Addressables.MergeMode.Union, false);while (!downLoadData.IsDone){Debug.Log($"下載進度: {downLoadData.PercentComplete * 100}%");yield return null;}yield return downLoadData;if (downLoadData.Status == AsyncOperationStatus.Succeeded){Debug.Log("下載成功!");}else{Debug.Log("下載失敗!");}Addressables.Release(downLoadData);}}Addressables.Release(updateHandle);}else{Debug.Log("catalog沒有需要更新的數據!");}Debug.Log("檢測完成");}else{Debug.Log("檢測資源失敗.....");}//最后一步 釋放資源 Addressables.Release(initialLogic);//釋放操作句柄,避免內存泄漏Addressables.Release(catalogLogic);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86108.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86108.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86108.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Elasticsearch 中實現推薦搜索(方案設想)

1. 存儲商品數據的數據類型 為了支持推薦搜索&#xff0c;商品數據通常需要包含以下字段&#xff1a; 商品索引結構 PUT /products {"mappings": {"properties": {"product_id": {"type": "keyword" // 商品 ID},"…

Aerotech系列(4)Aerotech.A3200名空間

IconTypeDescriptionAxisMask Represents a selection of axes Controller Represents a controller Allows configuring and c

React Router 是怎么實現靈活導航的?

&#x1f399; 歡迎來到《前端達人 React播客書單》第 21 期。 視頻版&#xff08;播客風格更精彩&#xff09; 今天我們不講 Hook&#xff0c;來拆解前端開發中另一個高頻組件&#xff1a;React Router 的進階導航模式。 你可能用過 <Link> 或 <Route>&#xff0…

Modbus TCP轉Profibus DP網關與JF - 600MT 稱重變送器輕松實現數據互換

Modbus TCP轉Profibus DP網關與JF - 600MT 稱重變送器輕松實現數據互換 在工業自動化領域&#xff0c;不同設備之間的通信與數據交互至關重要。Modbus TCP轉Profibus DP網關作為連接不同協議設備的關鍵橋梁&#xff0c;發揮著不可或缺的作用。本文將以JF - 600MT稱重變送器與3…

聊聊 SQL 注入那些事兒

相信大家對于學校們糟糕的網絡環境和運維手段都早有體會&#xff0c;在此就不多做吐槽了。今天我們來聊一聊SQL注入相關的內容。 何謂SQL注入&#xff1f; SQL注入是一種非常常見的數據庫攻擊手段&#xff0c;SQL注入漏洞也是網絡世界中最普遍的漏洞之一。大家也許都聽過某某學…

多傳感器融合

目錄 多傳感器融合 多傳感器融合的方向 傳感器融合方案介紹 LOAM LIO-SAM LVI-SAM 多線激光雷達性質 什么是運動畸變 兩步優化的幀間里程記 IMU 器件介紹及選型建議 IMU 標定方法簡介 視覺里程計 VS 激光里程計 LVI-SAM 激光視覺融合思路簡介 多傳感器融合工程實踐經驗與技巧 多…

Auto-GPT vs ReAct:兩種智能體思路對決

目錄 Auto-GPT vs ReAct&#xff1a;兩種智能體思路對決 &#x1f9e0; 一、智能體的演化背景 &#x1f9e9; 二、Auto-GPT&#xff1a;自循環的執行體 &#x1f50d; 三、ReAct&#xff1a;推理 行動的交錯協同 ?? 四、對比總結 &#x1f6e0; 五、你該選誰&#xff…

本地部署大模型性能測試,DeepSeek-R1-0528-Qwen-8B 依然是我的不二之選

大家好&#xff0c;我是 ai 學習的老章 介紹一個大模型并發性能測試工具 看一下我高頻使用的&#xff0c;在2*4090顯卡上部署的 DeepSeek-R1-0528-Qwen-8B 性能如何 _我_特別喜歡的三個DeepSeek版本 DeepSeek-R1-0528 蒸餾 Qwen3:8B 大模型&#xff0c;雙 4090 本地部署&am…

華為云Flexus+DeepSeek征文|華為云 Dify 高可用部署教程:CCE 容器集群一鍵構建企業級智能應用

前言 在數字化轉型加速的企業級應用場景中&#xff0c;構建高可用智能平臺已成為業務創新的核心驅動力。本文深度解析基于華為云CCE容器服務的Dify智能應用部署實踐&#xff0c;揭示如何通過云原生架構與AI技術的深度融合&#xff0c;實現企業知識管理、智能客服等場景的敏捷落…

Linux 多進程間通信(IPC)詳解

在 Linux 系統中,多進程通信(Inter-Process Communication, IPC) 是實現多個進程之間數據交換和同步的重要機制。由于每個進程擁有獨立的地址空間,因此需要借助特定的系統機制來實現信息共享。 ?? Linux 下常見的 6 種進程間通信方式 管道(Pipe)命名管道(FIFO)消息隊…

服務器數據恢復——異常斷電導致服務器故障的數據恢復案例

服務器數據恢復環境&#xff1a; 某服務器上有一組由12塊硬盤組建的raid5磁盤陣列。 機房供電不穩定導致機房中該服務器非正常斷電&#xff0c;重啟服務器后管理員發現服務器無法正常使用。 意外斷電可能會導致服務器上的raid模塊損壞。 服務器數據恢復過程&#xff1a; 1、將故…

微信小程序中 rpx與px的區別

在微信小程序中的rpx比px方便的多 <!--pages/welcome/welcome.wxml--> <!--rpx替換px--> <image style"width:200rpx;height: 200rpx"src"/images/avatar/3.png"></image> <text>你好&#xff0c;凍梨</text> <but…

python3實現QQ官方機器人回調驗證

考慮到第三方的機器人現在越來越難維持了&#xff0c;來搗鼓一下官方的機器人。雖然官方藏著掖著不肯開放很多功能&#xff0c;但起碼能用。官方機器人的優點是穩定&#xff0c;只要申請成功&#xff0c;且你自己不亂搞&#xff0c;基本不存在被封的可能&#xff0c;缺點是藤子…

基于Vue3+TS的自定義指令開發與業務場景應用

文章目錄 1. 前言2. 基礎概念與優勢?3. Vue3TS自定義指令的創建與注冊?3.1. 創建自定義指令?3.2. 注冊自定義指令? 4. 實際場景示例?4.1. 權限指令控制?4.2. 圖片懶加載指令? 5. 優化與注意事項? 1. 前言 在 Vue3 的開發生態中&#xff0c;自定義指令是一項極為靈活且…

Elasticsearch 索引文檔的流程

Elasticsearch 索引文檔的流程是一個分布式、多階段的過程&#xff0c;涉及客戶端請求、路由、主副本同步及持久化等步驟&#xff0c;具體流程如下&#xff1a; 一、客戶端請求與路由 1.1 文檔接收與路由計算? 客戶端通過 REST API 發送文檔寫入請求&#xff0c;需指…

【unity】批量剔除圖片四周空白像素的工具

摘要&#xff1a;Unity圖片空白像素批量處理工具 該工具提供兩種方式批量剔除圖片空白像素&#xff1a; 靜態處理類&#xff1a;提供TrimTexture方法&#xff0c;可讀取紋理像素數據&#xff0c;計算非透明區域邊界&#xff0c;生成裁剪后的新紋理&#xff1b;SaveTexture方法…

可編輯64頁PPT | 基于DeepSeek的數據治理方案

薦言摘要&#xff1a;在數據量爆炸式增長且業務需求日益復雜的當下&#xff0c;企業數據治理面臨著數據分散、標準混亂、價值挖掘難等諸多挑戰。我們基于DeepSeek強大的智能能力&#xff0c;為企業量身打造創新數據治理方案。 DeepSeek憑借其卓越的自然語言處理和深度學習技術…

啟用AWS VPC流日志保存到CloudWatch日志組

目標 啟用VPC流日志 啟用流日志 選擇vpc&#xff0c;開始啟用流日志&#xff0c;如下圖&#xff1a; 設置名稱和日志組&#xff0c;創建流日志&#xff0c;如下圖&#xff1a; 參考 AWS云中的VPC啟用流日志保存S3&#xff08;AWS中國云&#xff09;創建發布到 CloudWatc…

游戲引擎學習路徑與技術棧指南

游戲引擎架構全景圖&#xff08;基于GAMES104 V2.2思維導圖&#xff09; graph TDA[基礎架構] --> A1[面向數據管理]A --> A2[任務系統]A1 --> A11[ECS架構]A1 --> A12[內存優化]A2 --> A21[Job System]A2 --> A22[依賴調度]B[工具鏈] --> B1[編輯器框架]…

預訓練大語言模型

Encoder-only model&#xff08;Autoencoding model&#xff09; 使用掩碼語言模型&#xff08;Masked Language Modeling, MLM&#xff09;進行預訓練輸入原始語句和掩碼&#xff0c;訓練目標是預測掩碼標記&#xff0c;一遍重建原始句子->也稱為降噪目標&#xff08;deno…