你好,我是郑洪智,你可以叫我大智。
前几天有多个童鞋问我:
- “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规则等等。
好了,今天就絮絮叨叨到这里了。没讲清楚的地方欢迎评论,不点赞、收藏我是不会回复你的哦(¬、¬) (¬_¬)
我是大智,你的技术探路者,下次见!
别走!点赞、收藏!
好,你可以走了。