项目构建模板: jeason1997/UnityBuildTemplate: Unity项目构建模板,包括AssetBundle的构建 (github.com)
参考: unity3d:Assetbundle模拟加载,同步加载,异步加载,依赖包加载,自动标签,AB浏览器,增量打包_四夕立羽的博客-CSDN博客_unity 增量打包
1.通过命令行参数后台启动unity,并指定执行某个编辑器脚本,来实现静默打包。
-quit -batchmode -projectPath $ProjectPath -executeMethod JenkinsBuilder.BuildApp -logFile JenkinsBuildUnity.log PublishPlatform-$PublishPlatform
projectPath:工程路径
executeMethod:Unity编辑器里的脚本,哪个类的哪个函数(静态)
XX-$XX:是传给编辑器脚本的自定义参数,可以由jenkins自动填写
2.通过jenkins来实现部署网页打包器,通过网页来调用上面的命令,一键自动打包apk包和资源ab包
【Unity】Jenkins自动打包入门小结_两水先木示的博客-CSDN博客_unity jenkins
3.assetbundle优化方式:
注意: 每次打包的时候,调用 BuildPipeline.BuildAssetBundles,会将当前所有已经设置了bundle名字的资源进行打包,名字相同的打成一个包,会查询引用,如果引用到的资源没设置bundle名字,则会为每个用到这个资源的bundle都拷贝一份进去。
多线程打包,查询资源互相依赖就变得尤其重要。避免将相同引用的资源,多次打进包里。比如有包a,b,c,a跟b都引用了c,用线程1打包a,线程2打包b,那么2个线程都会打包一份c。造成资源重复。
4.优化打包速度:
5.资源加载:
加载方式:
Unity新版打包系统: 关于Addressable的一些日常应用 - 知乎 (zhihu.com)
1.addressable的全部操作均为异步操作,不会阻塞主线程
2.提供了所有问题的解决方案,如资源的打包,加载,更新,依赖项,性能分析等
3.addressable则可以在不打包的情况下在Editor里模拟打包状态进行测试
第三方的开源资源加载方案: xasset
xasset 的资源加载策略是:
查询缓存中是否有记录,如果有直接取缓存的地址。
缓存中如果没有,先看安装包内部是否有,如果有直接返回包内的加载地址。
如果包内没有,再看下载目录是否有,如果有直接返回下载目录的地址。
下载目录没有,直接返回服务器的下载地址。
打包到移动平台的坑:
1. Unity RenderTexture 当作为 Camera.targetTexture 时,在某些安卓手机或模拟器无法显示或出现错乱 以及粒子无法正常显示 - JeasonBoy - 博客园 (cnblogs.com)
2.在移动平台烘培的光照贴图会丢失,要把Project Settings -> Graphics -> Lightmap Modes 改为 Custom,并且把Baked Non-Dirceiontal打开,重新打包出来的就正常了