Notifications
Article
【Addressable】发布到服务端的那些事
Published 3 months ago
965
8
【Addressable】发布到服务端的那些事
你好,我是郑洪智,你可以叫我大智。
前几天有多个童鞋问我:
  • “Addressable打包好怎么放到服务端?”
  • “发布出来的程序,Addressable资源更新后怎么加载不进来?”
  • “可以出一个addressable资源在服务器上的加载吗?而不是本地加载 或者webgl的 这些官方文档好少”
今天就来总结下使用Addressable系统在上线前的准备工作以及后续更新的一些工作,主要是讨论Addressable中包含远程资源的情况,如果是纯本地资源,那就没这么麻烦,可以略过本文。
本文基于Addressable 1.5.0

Addressable发布前的准备

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

1. Group分组的优化

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

2. 检查Group的设置

Build and Load Paths
非常重要的一个属性,决定了资源将会打包到哪里,从哪里加载。
Content Update Restriction
决定了资源是全量更新还是增量更新。
  • Can Change Post Release 后续更新资源的话全量更新(直接替换旧资源)
  • Cannot Change Post Release 后续更新资源的话增量更新(不改变旧资源包,使用新资源包加载改变的内容)

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

通常在开发过程中是一套Profile,因为在本地开发,可能会用Hosting服务进行测试,所以都是开发路径。
但是发布的时候一定要注意新建一套Profile,其中本地路径几乎不用变,但是Remote路径,特别是RemoteLoadPath一定要改成服务器路径。
如上图所示,添加了一个Production的Profile。注意其中的RemoteBuildPath和RemoteLoadPath的设置。仅供参考,根据实际情况设置。
添加完也得记得切换啊喂!!!

4. 检查AddressableAssetSettings

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

Addressable发布中的工作

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

1. 打包

首先是把资源打包出来。
一定要注意后续更新Addressable资源时就【不能】再用这个选项打包了。这种new build构建完就必须发布新的包体。
原因是new build时,会将一些数据写入AddressableAssetsData中,是存在工程中,打包的时候在程序包体中的,如AddressableAssetsData\Windows\addressables_content_state.bin。如果后续更新的时候再new build,那这些数据实际上是没有办法被原来已发布的程序获取到的,就会出现加载不到新资源的情况。
打包出来的资源如图所示:

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

下面举个简单的例子,放到服务器上(CDN同理)。
我在本地开一个apache http server(我很懒,用了xampp工具)
将第一步打包好的资源放到http server的根目录中,对于xampp,就是htdocs目录。
由于我是在本地测试的,所以还有一步,需要设置一下本地的hosts,让系统能识别之前设置的那个域名。
windows平台hosts文件位于:C:\Windows\System32\drivers\etc,注意使用管理员权限修改。

3. 在编辑器中测试一下

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

4. 打包程序包体

打包程序,没啥说的。
可以上线了!

后续资源更新

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

1. 更新Addressable资源包

复习(我是新来的啊喂!)一下,更新流程如下:
1、点击Check for Content Update Restrictions按钮
2、这时会弹出一个窗口Build Data File,让你选择一个bin文件(里面是之前的资源包构建数据),bin文件的位置在Assets\AddressableAssetsData\[BuildTargetPlatform]。此时注意你当前要打包的平台,不要选错了。
3、这时候会弹出来一个窗口,显示自从上一次打包以后,静态内容的变化(Group设置为Cannot Change Post Release的内容 )。如果有的话点击Apply Changes,系统会自动给新的内容创建一个group。如果没有可以忽略(如下图就可以忽略)。
如果你的Group里面没有静态内容(Group设置为Cannot Change Post Release的内容 ),其实前面3步可以省略哈。
4、此时点击Build菜单下面的Update a Previours Build,此时又要选择一下Build Data File,就可以把资源包构建出来了。

5、把资源包上传到服务器。
6、喝杯咖啡犒劳自己!
对Addressable感兴趣的童鞋:更多教程在洪流学堂公众号回复addr获取,包括Addressable各种工具的用法,自定义Analyze规则等等。
-------------------------我是分割线-------------------------------------
好了,今天就絮絮叨叨到这里了。没讲清楚的地方欢迎评论,不点赞、收藏我是不会回复你的哦(¬、¬) (¬_¬)
我是大智,你的技术探路者,下次见!
别走!点赞、收藏!
好,你可以走了。
Tags:
大智
你的Unity技术探路者/洪流学堂公众号主理人/XR创业者/VX:zhz11235 - Student
41
Comments
W
Wang
2 months ago
请问这个异步加载场景如何获取进度呢,好像没有提供
0
大智
2 months ago
你的Unity技术探路者/洪流学堂公众号主理人/XR创业者/VX:zhz11235
Link我将一个group设置成增量更新且path为local(为了随底包安装),然后更改其中部分资源再update a previous build。结果没办法正常显示资源,不清楚哪里出了问题
local包更新目前有问题(表现为原local包里的资源会加载不出来),等官方修bug
0
L
Link
2 months ago
我将一个group设置成增量更新且path为local(为了随底包安装),然后更改其中部分资源再update a previous build。结果没办法正常显示资源,不清楚哪里出了问题
0
大智
3 months ago
你的Unity技术探路者/洪流学堂公众号主理人/XR创业者/VX:zhz11235
欧阳林鑫请问下游戏启动询问用户下载新的热更包怎么做呢?
可以获取到需要更新内容的资源大小(给所有资源加一个特殊的label),以此为依据进行判断就行了
0
欧阳林鑫
3 months ago
请问下游戏启动询问用户下载新的热更包怎么做呢?
0