【Addressable】发布到服务端的那些事

时间:2024-04-01 07:01:53

你好,我是郑洪智,你可以叫我大智。

前几天有多个童鞋问我:

  • “Addressable打包好怎么放到服务端?”
  • “发布出来的程序,Addressable资源更新后怎么加载不进来?”
  • “可以出一个addressable资源在服务器上的加载吗?而不是本地加载 或者webgl的 这些官方文档好少”

今天就来总结下使用Addressable系统在上线前的准备工作以及后续更新的一些工作,主要是讨论Addressable中包含远程资源的情况,如果是纯本地资源,那就没这么麻烦,可以略过本文。

本文基于Addressable 1.5.0

Addressable发布前的准备

Addressable发布前有一些准备工作,通常是如下的工作:

1. Group分组的优化

借助Analyze工具对分组进行分析,减少资源的重复,减少资源的下载量和加载时间。Analyze的具体用法就不多讲了。

【Addressable】发布到服务端的那些事

2. 检查Group的设置

【Addressable】发布到服务端的那些事

Build and Load Paths
非常重要的一个属性,决定了资源将会打包到哪里,从哪里加载。

Content Update Restriction
决定了资源是全量更新还是增量更新。

  • Can Change Post Release 后续更新资源的话全量更新(直接替换旧资源)
  • Cannot Change Post Release 后续更新资源的话增量更新(不改变旧资源包,使用新资源包加载改变的内容)

3. 检查Profile的设置以及选择

【Addressable】发布到服务端的那些事

通常在开发过程中是一套Profile,因为在本地开发,可能会用Hosting服务进行测试,所以都是开发路径。
但是发布的时候一定要注意新建一套Profile,其中本地路径几乎不用变,但是Remote路径,特别是RemoteLoadPath一定要改成服务器路径。

【Addressable】发布到服务端的那些事

如上图所示,添加了一个Production的Profile。注意其中的RemoteBuildPath和RemoteLoadPath的设置。仅供参考,根据实际情况设置。

添加完也得记得切换啊喂!!!

【Addressable】发布到服务端的那些事

4. 检查AddressableAssetSettings

【Addressable】发布到服务端的那些事

如果有后续更新资源的打算,一定要在第一版发布前勾选上AddressableAssetSettings中的BuildRemoteCatalog,并确认下Path是否正确。

Addressable发布中的工作

上面准备工作做完后,就可以开始发布了。

1. 打包

首先是把资源打包出来。

【Addressable】发布到服务端的那些事

**一定要注意后续更新Addressable资源时就【不能】再用这个选项打包了。**这种new build构建完就必须发布新的包体。

原因是new build时,会将一些数据写入AddressableAssetsData中,是存在工程中,打包的时候在程序包体中的,如AddressableAssetsData\Windows\addressables_content_state.bin。如果后续更新的时候再new build,那这些数据实际上是没有办法被原来已发布的程序获取到的,就会出现加载不到新资源的情况。

打包出来的资源如图所示:

【Addressable】发布到服务端的那些事

2. 将RemoteBuildPath里的资源放到服务器合适的位置

下面举个简单的例子,放到服务器上(CDN同理)。

我在本地开一个apache http server(我很懒,用了xampp工具)

【Addressable】发布到服务端的那些事

将第一步打包好的资源放到http server的根目录中,对于xampp,就是htdocs目录。

【Addressable】发布到服务端的那些事

由于我是在本地测试的,所以还有一步,需要设置一下本地的hosts,让系统能识别之前设置的那个域名。

windows平台hosts文件位于:C:\Windows\System32\drivers\etc,注意使用管理员权限修改。

【Addressable】发布到服务端的那些事

3. 在编辑器中测试一下

此时可以在编辑器中测试一下了。

4. 打包程序包体

打包程序,没啥说的。

可以上线了!

后续资源更新

如果后续资源需要更新,就得使用资源更新的流程了。

**在这有的同学有误解,以为静态内容(也就是Cannot Change Post Release)的Group才需要使用增量更新的流程。**其实不然,只要是程序包已经发布了,静态内容和动态内容都得使用更新流程来处理资源的更新。

1. 更新Addressable资源包

复习(我是新来的啊喂!)一下,更新流程如下:
1、点击Check for Content Update Restrictions按钮

【Addressable】发布到服务端的那些事

2、这时会弹出一个窗口Build Data File,让你选择一个bin文件(里面是之前的资源包构建数据),bin文件的位置在Assets\AddressableAssetsData\[BuildTargetPlatform]。此时注意你当前要打包的平台,不要选错了。

【Addressable】发布到服务端的那些事

3、这时候会弹出来一个窗口,显示自从上一次打包以后,静态内容的变化(Group设置为Cannot Change Post Release的内容 )。如果有的话点击Apply Changes,系统会自动给新的内容创建一个group。如果没有可以忽略(如下图就可以忽略)。

【Addressable】发布到服务端的那些事

如果你的Group里面没有静态内容(Group设置为Cannot Change Post Release的内容 ),其实前面3步可以省略哈。

4、此时点击Build菜单下面的Update a Previours Build,此时又要选择一下Build Data File,就可以把资源包构建出来了。

【Addressable】发布到服务端的那些事

5、把资源包上传到服务器。

6、喝杯咖啡犒劳自己!

【Addressable】发布到服务端的那些事

对Addressable感兴趣的童鞋:更多教程在洪流学堂公众号回复addr获取,包括Addressable各种工具的用法,自定义Analyze规则等等。


好了,今天就絮絮叨叨到这里了。没讲清楚的地方欢迎评论,不点赞收藏我是不会回复你的哦(¬、¬) (¬_¬)

我是大智,你的技术探路者,下次见!

别走!点赞收藏

好,你可以走了。