Unity LightMap之动态切换LightMap模拟白天夜晚

    下一篇 :Lightmap之动态加载单个物件和其对应的Lightmap

       游戏中通常有这种需求,同一个场景,白天和晚上光照不同。这种情况下就需要通过程序动态切换预先烘焙好的lightmap。先看下效果,分别用红色的灯和绿色的灯烘焙,代表白天和夜晚。在编辑器模式下,分别保存下来。运行时动态加载(分别点击左上角按钮,加载不同的lightmap)。模拟白色和夜晚。

Unity LightMap之动态切换LightMap模拟白天夜晚_第1张图片

Unity LightMap之动态切换LightMap模拟白天夜晚_第2张图片

以下是烘焙参数

Unity LightMap之动态切换LightMap模拟白天夜晚_第3张图片

 

Unity LightMap之动态切换LightMap模拟白天夜晚_第4张图片

1.上图Light的参数是最后运行时的参数,mode选的是Mixed,在烘焙时要选Baked。

2.一共烘焙两次,红色灯光和绿色灯光,烘焙一次保存一下烘焙留下的整个目录。即是和场景同名的那个目录。

Unity LightMap之动态切换LightMap模拟白天夜晚_第5张图片

3.在Main Camera挂脚本(方便演示)SwitchLightMap.cs

Unity LightMap之动态切换LightMap模拟白天夜晚_第6张图片

以下是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 };
        }
    }

 

你可能感兴趣的:(Unity3D.杂项)