Unity动态加载光照贴图的坑
Table of Contents
请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
Unity的光照贴图,如果在运行时动态加载的话,需要对创建出来的game object的lightmap index做一次重新指派, 然后在设置一下LightmapSetting。基本按照Mr.钱康来的这一系列文章那样子设置。如下链接:
如果按照老钱的方法去做了,还是有问题的话,那么就要看下 【Project Settings -> Graphics -> Shader Stripping】 菜单下的这个:
就是打包时没把LIGHTMAP_ON相关的shader变体给打进去,因为被strip掉。为了保险,选中Custom,然后所有全部选上,再进行打AB。就能正确加载光照贴图。当然,这样子会导致变体变多变大,所以最好还是仔细分析下,那些勾选上为好。
国内有一个兄弟也是碰到这个问题,在Unity论坛上也有人用这个方案解决了问题
另外,经过实测,只要正确设置好shader stripping之后,无论从AB中装载进来的game object,是不是从static变为非static标签,或者有没有用StaticBatchingUtility.Combine去运行时静态合批,都不影响正确加载lightmap
参考网页
where did “lightmap static” go
打包Assetbundle以及Shader Stripping导致LightMap全部丢失的解决方法
Stripping scriptable shader variants
Stripping commonly unused shader variants in Unity’s built-in render pipeline