为了苦逼的程序员们少加点班,分享一些在项目开发过程中遇到的一些坑
我使用的环境是unity 5.6.3p3 版本管理是 git
(1) 虽然大家都知道 unity 用的序列化方式是 yaml(读音90% 的会读错~~!),但是unity 基于yaml 有三种方式,文本方式 二进制方式 和混合模式
它坑在哪个地方呢? 两者互相转换的时候,不是完全可逆的,git 会识别出来,文本转二进制 ,然后二进制转文本 ,会多了一些yaml的版本号描述(别说我挑剔,我这就是这样的人~~!)
(2)unity 5 两次对相同的资源打包,出来的assetbundle 是不一样的(unity很早官方已经知道啦,但就是不愿意改,从没有见过如此厚颜无耻的引擎,一线的开发人员总给你擦屁股....),怎么办呢? 自己通过生成出来的manifest 分析依赖文件自身的md5,如果unity 自己擅自把assetbundle 重新生成啦,一旦发现,拒绝提交版本库
(3)材质球A,用shader B ,材质球 引用了贴图C,然后A 换shader,从B换成C,C 上用了新的贴图D,你在查看A的引用的时候,你会发现A引用的 C 和D,unity 有神奇的记忆功能,unity会记住你在材质球上的历史记录,这会导致你的assetbundle 非常大
(4)unity 很多的时候,自作聪明,新建一个粒子,会指认默认的材质球,而且材质球用的是standardShaer(移动平台从来不用的shader),一旦疏漏 standardShader,assetbundle 的大小会变大
(5)这是我一个同事说的:LOD level 如果在shader 里面没有实现,在给shader 切换LOD的时候,unity 在手机上就会崩溃
(6) unity 在il2cpp 的时候 有个选项,决定是否要strip引擎代码,但是 如果选择strip,但是resources 文件夹里面一个animator controller的资源 都没有话 ,如果在手机上运行时加载 带有animator controller 的ab,就会卡死,这种s 级的bug ,unity 居然没有修复,真的是奇葩引擎
ps:(百度游戏的sdk,在点击浮窗的时候,会暗地里面的改手机的分辨率,有些手机就直接崩溃啦,太阴险啦,程序员不要为难程序员)