网易首页 > 网易号 > 正文 申请入驻

Addressables 系统也能扩展了?本文教你如何给资源“上锁”

0
分享至

Unity Addressables系统在 Asset Bundle 之上,提供了异步加载,依赖管理以及内存管理等更加丰富的资源管理功能,也让开发者实现远程资源更新更加的便捷。但是,再灵活的系统设计也很难满足开发者各种应用场景的需求,比如,有的开发者希望能够定制 Catalog,有些开发者希望资源能够加密。为了达到某些特定需求,对 Addressables 系统进行适当的扩展也就在所难免。本文希望通过通过一个加密功能的实际案例来帮助大家更深入的理解 Addressables 系统,以及如何对其进行扩展。

本文所介绍的加密功能已添加到Addressables.CN 插件包中,大家可以下载使用。使用方式也很简单,只需在 Group 属性中设置相应加密方式即可实现资源包加密。更多详情请参考使用手册:

https://ucgbucket.unitychina.cn/AssetStreaming/AddressablesCN.pdf

下面我们就来看看如何实现 Asset Bundle 的加密,我们需要实现在打包的时候对资源包进行加密,在加载的时候对资源包进行解密。为了实现这两个过程,我们就需要了解资源加载和资源打包的过程。首先我们来看如何在打包的时候对资源包进行加密。

Asset Bundle 加密

01Asset Bundle 构建过程

资源包构建主要由AddressableAssetSettings.BuildPlayerContent()函数完成,该函数用于构建 Asset Bundles 和相应的 ContentCatalog。

配置资源包构建参数

如下图所示,资源包的构建参数主要由 AddressableAssetSettings 保存,各个 Group 的信息保存在 BundledAssetGroupSchema 类中,因此我们可以在这里保存加密类型 DataStreamProcessorType。

扩展资源包构建

在 Addressables 中,资源包的构建包含几种模式,分别对应 BuildScriptPackedMode,BuildScriptFastMode 和 BuildScriptVirtualMode,AddressableAssetSettings 会保存当前使用的模式。正式资源包的构建对应 BuildScriptPackedMode,因此,如果要添加资源包加密功能,可以考虑对 BuildScriptPackedMode 中的功能进行扩展。

02添加加密功能

在资源包的后处理中进行数据加密

BuildScriptPackedMode:PostProcessBundles 函数负责 AssetBundle 构建完成后的一些处理,其中会调用 CopyFileWithTimestampIfDifferent 函数对资源包进行保存。在资源包保存时,创建加密数据流,并将资源包复制到该加密数据流中进行文件保存,就实现了资源包加密。

实现自定义加密数据流

加密数据流主要提供两个接口,CreateWriteStream 和 CreateReadStream,用于数据对加密和解密,然后就可以根据项目需要对接口进行实现。在 AddressableCN 版本中,加密数据流的实现位于 EncryptedAssetBundleProvider 文件中。

Asset Bundle 解密

接下来,我们再来看如何在加载的时候实现资源包的解密。

01Asset Bundle 加载过程

LoadAssetAsync 是 Addressables 系统常用的异步加载接口,加载结果(AsyncOperationHandle)会通过回调函数返回。下面这段代码就简单展示了异步加载的全过程。


using System.Collections;using System.Collections.Generic;using UnityEngine.AddressableAssets;using UnityEngine;
public class AddressablesExample : MonoBehaviour {
GameObject myGameObject;
...Addressables.LoadAssetAsync("AssetAddress").Completed += OnLoadDone;}
private void OnLoadDone(UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle obj){// In a production environment, you should add exception handling to catch scenarios such as a null result.myGameObject = obj.Result;}}

整个加载过程大概分为 3 个步骤:

创建异步操作

LoadAssetAsync 接口实际上会调用 ResouceManager.ProvideResouce 来请求资源,并在该函数中创建一个与资源类型对应的异步操作,该操作以 AsyncOperationBase 作为基类。创建好后,ResourceManager 会调用 StartOperation 启动该操作。

通过 Provider 完成资源请求

AsyncOperation 会将实际资源请求交给继承于 IResourceProvider 接口的Provider,Provider 与资源类型对应,比如 Asset Bundle 由 AssetBundleProvider 完成资源下载。

资源请求完成

资源请求完成后,异步操作会触发完成事件,并将 AsyncOperationHandle 返回给用户。

下图所示时序图简单表示了上述所示的资源请求过程,实际逻辑会考虑操作依赖关系,要复杂一些。

02添加解密功能

了解了资源加载过程后,我们只需要在读取数据的时候创建读取加密数据流的对象,将数据流进行解密即可。以下代码函数实现位于 AssetBundleResource 类中,该类实际调用 WebRequest 请求 Asset Bundle。

以上就是对如何扩展资源包加密功能的简要介绍,希望能够对大家对 Addressables 进行定制化开发有所帮助。如果你想了解更多关于资源更新方案的信息,欢迎访问 Unity 云端资源分发产品页:

Unity 云端资源分发页面:

https://unity.cn/product/cloud-content-delivery

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

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.

相关推荐
热点推荐
10万起!广汽新车官宣:8月10日,正式上市

10万起!广汽新车官宣:8月10日,正式上市

科技堡垒
2026-07-21 10:58:46
官方:库里成首位拥有名人堂个人展的现役球员

官方:库里成首位拥有名人堂个人展的现役球员

懂球帝
2026-07-22 07:27:14
中国男子游泳最薄弱单项,今年成绩意外处于亚洲和世界领先

中国男子游泳最薄弱单项,今年成绩意外处于亚洲和世界领先

体娱一家亲
2026-07-21 22:48:26
中国突然禁止氦气出口!全球炸锅,这步棋比稀土还狠

中国突然禁止氦气出口!全球炸锅,这步棋比稀土还狠

菁菁子衿
2026-07-19 11:01:25
惨剧!一人下河遇险,多人接连下水施救,5人全部遇难,两名幼童哭着跑上高速公路,拦汽车救爸爸妈妈

惨剧!一人下河遇险,多人接连下水施救,5人全部遇难,两名幼童哭着跑上高速公路,拦汽车救爸爸妈妈

华人生活网
2026-07-22 02:18:12
55家浙企上榜2026年中国500强,较上年净增4家

55家浙企上榜2026年中国500强,较上年净增4家

都市快报橙柿互动
2026-07-22 01:37:28
麒麟9030拆解报告:中国7nm级工艺用DUV做出比Intel 18A更细的金属线

麒麟9030拆解报告:中国7nm级工艺用DUV做出比Intel 18A更细的金属线

TechWeb
2026-07-21 12:06:04
你不仁别怪我不义!英国掠夺敬业,中国扣押英在华资产应提上日程

你不仁别怪我不义!英国掠夺敬业,中国扣押英在华资产应提上日程

博卜talk
2026-07-22 04:17:11
北京男篮追逐新外援,2米06大前锋基本加盟,CBA场均11+7!

北京男篮追逐新外援,2米06大前锋基本加盟,CBA场均11+7!

中国篮坛快讯
2026-07-22 06:30:08
889万腰斩起拍,87轮出价后5.84万/㎡成交!5年前摇号时的“天选之子”,杭州一高端小区终于卖掉了第一套二手房

889万腰斩起拍,87轮出价后5.84万/㎡成交!5年前摇号时的“天选之子”,杭州一高端小区终于卖掉了第一套二手房

都市快报橙柿互动
2026-07-21 00:07:56
儿子都13岁了!49岁夏奇拉腰腹紧致,世界杯中场秀震惊全球

儿子都13岁了!49岁夏奇拉腰腹紧致,世界杯中场秀震惊全球

鱼语昱雨轩
2026-07-21 09:33:14
被做局了?中方宣布买55架空客飞机,德总理转身翻脸,逼中国认栽

被做局了?中方宣布买55架空客飞机,德总理转身翻脸,逼中国认栽

乌克兰小静
2026-07-21 03:26:07
掏空两家上市公司,浙系大佬被多部门追责

掏空两家上市公司,浙系大佬被多部门追责

新浪财经
2026-07-21 22:49:25
商务部、国家发改委、教育部、公安部、民政部、人社部、市场监管总局、国家医保局、最高人民法院,印发通知

商务部、国家发改委、教育部、公安部、民政部、人社部、市场监管总局、国家医保局、最高人民法院,印发通知

政知新媒体
2026-07-21 01:03:55
换过3台空调后的教训,再买1.5匹,我一定坚持5不选、1不装

换过3台空调后的教训,再买1.5匹,我一定坚持5不选、1不装

小蜜情感说
2026-07-21 07:16:12
8月1日正式执行!燃油车重大改革落地,年检、卖车、买车全改

8月1日正式执行!燃油车重大改革落地,年检、卖车、买车全改

三农老历
2026-07-21 14:14:47
98.5%全是大山!明明属于北京,整座城区却挤在狭窄河谷里

98.5%全是大山!明明属于北京,整座城区却挤在狭窄河谷里

爱下厨的阿酾
2026-07-22 03:00:04
申花4-1逆转海牛晋级足协杯8强,阿苏埃帽子戏法+助攻+伤退

申花4-1逆转海牛晋级足协杯8强,阿苏埃帽子戏法+助攻+伤退

懂球帝
2026-07-21 21:30:22
两性心理学:敢和别人老婆“偷情”的男人,绝大多数都会有这两个“心理”,超准

两性心理学:敢和别人老婆“偷情”的男人,绝大多数都会有这两个“心理”,超准

心理观察局
2026-07-16 06:35:04
“这么破烂的家,咋好意思拍视频?”学生天崩开局,老鼠进去都要开导航

“这么破烂的家,咋好意思拍视频?”学生天崩开局,老鼠进去都要开导航

熙熙说教
2026-07-21 16:00:16
2026-07-22 08:20:49
Unity incentive-icons
Unity
Unity中国官方帐户
2488文章数 6735关注度
往期回顾 全部

科技要闻

OpenAI高管:Kimi K3强到没法用"蒸馏"解释

头条要闻

小伙旅途中改道救灾去世 好友泪崩透露其最后一条消息

头条要闻

小伙旅途中改道救灾去世 好友泪崩透露其最后一条消息

体育要闻

“不会进球”的前锋,在世界杯决赛进球了

娱乐要闻

谢贤被曝已火葬,狄波拉携儿女送别

财经要闻

百虾竞速上车:4条路线争夺车载AI话语权

汽车要闻

WAIC专访|易启未来余志勇:网易孵化按摩机器人 能识穴会“手法”

态度原创

教育
亲子
旅游
房产
公开课

教育要闻

“南大一心”揭牌!华为,携手南方大学

亲子要闻

邀请儿童走进实验室 南方医科大学儿童皮肤科普课堂开讲

旅游要闻

夏日避暑游升温 多元业态激发暑期文旅消费活力

房产要闻

最高奖励15万!免学费!海南民办高中,疯狂抢人!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版