assertbundle shader丢失

来源:互联网 发布:这位程序员四十岁了还 编辑:程序博客网 时间:2024/05/21 17:59
从Unity4.2开始,为了减少首包大小,不会默认将所有Shader引擎加到游戏程序中,据Unity技术支持人员所说,Unity会将Shader引擎打包到Assetbundle资源中,但是我测试发现不行(可能是我打开方式不对...),不过只要将用到的Shader加到Editor->Graphics Settings的Shader列表里再进行打包即可。
不同的平台是需要打包不同的包。【这是我当时查找的内容,做的记录】
介绍自己的项目,在win上开发,切的andriod模式,加上项目是分2个工程,工程A是给美术提交美术资源。工程B用于开发。这样的好处是未来不用将相关的资源从项目中摞出来,所有的资源从服务器上下载就行。工程B下载资源直接开发,这个模式的好处是,资源热更新从开始开发就做了缺点也很明显,所有的资源都要打包。一但资源有问题,问题暴露是很明显,但是问题查起来也很麻烦的。
很多时候会发现粉红的丢失shader,用ShaderFind(),找到同名的shader重新赋值。当时不清楚为什么怎么做,只能知道能解决问题。后来项目来位高级工程师,重新研究bundle打包。工程A资源在andriod模式下打的包,在工程B在模式andriod下,有一些shader会丢失,是因为工程A在andriod模式下打包,shader以及被编译成andriod,由于真机和PC上的渲染的不同,部分shader会丢失。
现在优化后是开发是用PC,资源也用PC。打包android的包,是另外切的分支在android模式下打包。也在android模式下生成apk,就没有出现粉红色的情况。
这样的好处就是在PC开发就只要开发,只要Shader对手机可以使用,就能使用。
当然我也看到一些人的分享是把shader文件全到Resource下,(http://tieba.baidu.com/p/3526487905)在代码生成的时候再去设置下。但是通过Profiler看到shader有2份的,或者很多。虽然shader文件不是很大,但是从本质上没有了解bundle运行原理。
这个月在侑虎科技分享会上,Unity4.6上bundle是通过名称来查找的,也就是所有bundle必须不同名称。也提到了unity5.4可能实现了通过依赖路径来找bundle.
0 0
原创粉丝点击