实验步骤:
1.导出一个带光照贴图 和 Fog的场景的Assetbundle资源(依赖到的shader单独导出,PC平台)
2.在一个新的场景里加载上述导出的场景资源,查看 加载的场景是否有灯光和雾效果。
第一种导出场景的设置:
projectsetting -> graphicsetting 下的shader 剥离都设置为自动。
实验1:
在一个不含光照贴图和雾的空场景中导出资源,如下:
实验结果,光照贴图和雾效果均丢失。
实验2:
在上一次试验之后,导出的资源不删除,然后打开导出的带光照贴图和雾效果的场景,在该场景执行导出操作,发现没有资源导出,结果依旧是光照和雾均丢失。
实验3:
删除上一次导出的scene文件夹(存放shader以外的资源),然后打开打出的场景,在该场景执行导出操作,发现有资源导出,依旧是光照和雾均丢失。
实验4:
删除上一次导出的shader文件夹(存放shader以外的资源),然后打开打出的场景,在该场景执行导出操作,发现有资源导出,下载之后发现光照贴图和雾都好了。
实验5:
删除导出的所有资源,然后打开打出的场景,在该场景执行导出操作,发现有资源导出,下载之后发现光照贴图和雾都好了。
第二种导出场景的设置:
(lightmapmode fogmode 和需要导出的场景用到的模式一样)
实验6:
删除所有导出的资源,在一个不含光照贴图和雾的空场景中导出资源,下载之后发现光照贴图和雾都是好的。
实验结论:
当shader stripping(shader剥离)设置的是自动,如果你在空场景中导出场景资源,会导致导出的其他场景资源的光照贴图和雾丢失,只有打开你需要导出的场景,让unity识别到你当前用到的光照贴图和雾的模式,并且把之前导出的错误的shader资源删掉(依赖导出资源,值改设置无法让unity重新导出shader),unity才能重新正确的导出带光照贴图和雾的场景和shader资源。当shader stripping设置为手动,并且选择了需要导出的场景用到的模式后,那就不必关注在哪种场景中导出。这里只测试了shader剥离导致的shader丢失。