资源管理
Q1:我们项目做AssetBundle打包时,发现如果资源所依赖的C#Script的Public成员变量有变化时,用新代码加载旧的AssetBundle就会不兼容。有没有什么方法能判断这些Script在变化时是否需要重新打AssetBundle呢?目前我们使用.CS文件的MD5来判断是否需要重新打包,但其实这样应该有很多不必要的重复打包,对吗?
该问题的本质原因是新代码的序列化信息变化所致。建议研发团队使用Unity 5的新的AssetBundle打包方式,默认情况下,Unity 5引擎会自动检测其脚本的序列化信息是否进行改变,从而自动进行增量打包。
资源管理
Q2:Unity的材质的宏是有材质用到时才会被编译吗?还是说不手动Skip都会编译?
在Unity中shader variant也包含两种类型,一种是通过 shader_feature 定义,一种是通过 multi_compile 定义。而只有通过 shader_feature 定义的 variant 在发布时会根据其使用情况来进行剥离。具体可见Unity官方的文档:https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html
需要注意的是,放在Always Included Shaders中的Shader,其包含的所有 variant 都不会被剥离,因此对于Standard Shader这类包含了大量 shader_feature的Shader,不推荐将其放入。
90



被折叠的 条评论
为什么被折叠?



