下一篇: Lightmap之Terrain和Lightmap切割
接上一篇,LightMap之动态切换LightMap模拟白天夜晚 ,介绍了最基本的动态切换。现在问题来了,当场景比较大的时候,我们通常不是一次性把所有的物件都加载,哪怕这个物件是静态的,比如场景中不动的建筑。如果我们仅仅是烘焙后场景物件保存成prefab,那么我们在加载后,prefab是没有烘焙信息的。最后出现的效果如下,显然不是预期。Cube 1 和 Plane 1是之前烘焙完后保存的prafab。
好在有解决方案:在每个需要烘焙的场景物件上挂一个脚本,当场景烘培结束后,把每个物件的烘焙信息记录在脚本上,然后把整个物件连同脚本一起保存成prefab。运行时直接把prefab加载就完成了。下图就是正确的预期结果。

那这个脚本上记录什么东西呢?有两个很重要的数据就是index和offsetScale,这些信息都能从MeshRenderer中取

本文探讨了在Unity中如何处理大型场景时,动态加载带有Lightmap的静态物件。通过在烘焙的场景物件上附加脚本,记录index和offsetScale等关键信息,并在运行时加载保存为prefab的物件,实现正确显示烘焙效果。核心方法涉及lightmapIndex、lightmapScaleOffset的获取以及Lightmap烘焙贴图的保存和应用。

3147

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



