LightMap之动态切换LightMap模拟白天夜晚
下一篇 :Lightmap之动态加载单个物件和其对应的Lightmap
游戏中通常有这种需求,同一个场景,白天和晚上光照不同。这种情况下就需要通过程序动态切换预先烘焙好的lightmap。先看下效果,分别用红色的灯和绿色的灯烘焙,代表白天和夜晚。在编辑器模式下,分别保存下来。运行时动态加载(分别点击左上角按钮,加载不同的lightmap)。模拟白色和夜晚。
以下是烘焙参数
1.上图Light的参数是最后运行时的参数,mode选的是Mixed,在烘焙时要选Baked。
2.一共烘焙两次,红色灯光和绿色灯光,烘焙一次保存一下烘焙留下的整个目录。即是和场景同名的那个目录。
3.在Main Camera挂脚本(方便演示)SwitchLightMap.cs
以下是SwitchLightMap.cs的核心函数。完整代码下载
void OnGUI()
{
if (GUILayout.Button("green"))
{
LightmapData data = new LightmapData();
data.lightmapColor = greenLightMap;
data.shadowMask = greenShadowMask;
data.lightmapDir = greenDir;
LightmapSettings.lightmaps = new LightmapData[1] { data };
}
if (GUILayout.Button("red"))
{
LightmapData data = new LightmapData();
data.lightmapColor = redLightMap;
data.shadowMask = redShadowMask;
data.lightmapDir = redDir;
LightmapSettings.lightmaps = new LightmapData[1] { data };
}
}