也许有的童鞋会说,不就脚本动态换个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;
这样应该就有效了,快去试试吧。