【经验】脚本动态修改Lightmap烘焙贴图

也许有的童鞋会说,不就脚本动态换个Lightmap吗?简单的很,获取Lightmap的贴图数组,然后循环替换,分分钟搞定的事。代码duang的就出来了:

        for (int i = 0; i < LightmapSettings.lightmaps.Length; i++)
        {
            LightmapSettings.lightmaps[i].lightmapFar = Resources.Load<Texture2D>("Lightmap/LightmapFar-" + i);
        }

嗯,看起来是那么回事,不过运行后看,好像没效果啊……
其实吧,思路是对的,但是不能这么简单地循环设置Lightmap的贴图数组就完事的。而是需要缓存一个LightmapData[]数组,然后再给LightmapSettings.lightmaps赋值才会有效,所以应该这么写:
        LightmapData[] lightmapData = LightmapSettings.lightmaps;
        for (int i = 0; i < lightmapData.Length; i++)
        {
            LightmapData lightmap = new LightmapData();
            string path = string.Format("Lightmap/LightmapFar-{0}", i);
            lightmap.lightmapFar = Resources.Load<Texture2D>(path);
            lightmapData[i] = lightmap;
        }
        LightmapSettings.lightmaps = lightmapData;
这样应该就有效了,快去试试吧。

Ricky Yang个人原创,版权所有,转载注明,谢谢。

你可能感兴趣的:(unity3d,LightMap)