こちらの記事の方法でゲーム中にライトマップを切り替えてみます。
まずブラウザ向けのビルドを想定して、Window -> Rendering -> Lighting Settings からRealtime GIをオフに、Baked GIをオンにします。
また、すぐ下のLightmapping Settings でDirectional ModeをNon-Directionalにします。
さらに下のGenerate Lightingをクリックすると、Assetsフォルダ -> Scenes -> シーン名と同名のフォルダ にライトマップとリフレクションプローブが作られます。
(ライトマップは1つしか作られませんでした。)
この2つをコピーします。コピー元のファイルを消してしまうと、新しいライトマップと入れ替わってしまうようです。
ライトの設定を変更します。
冒頭の記事のスクリプトをお借りして、ライトプローブのファイルも取り出します。
もう一度Generate Lightingをクリックしてライトマップを作ります。
ライトプローブファイルも持ってきました。
ライトマップを変更するためのコードを書きます。
// 宣言
[SerializeField] Texture2D[] lightMap;
[SerializeField] LightProbes[] lightProbe;
[SerializeField] Cubemap[] reflectionProbe;
[SerializeField] ReflectionProbe probeComponent;
LightmapData[] lightMapData0;
LightmapData[] lightMapData1;
// ---
// Start()
lightMapData0 = LightmapSettings.lightmaps; // デフォルトのライトマップをlightMapData0に入れる
lightMapData1 = new LightmapData[1]; // 空のLightmapData型の配列を作る。
lightMapData1[0] = new LightmapData(); // 1つめの要素にLightmapData型のインスタンスを作成する
lightMapData1[0].lightmapColor = lightMap[0]; // ライトマップを設定
// ---
// 1キーを押したら
LightmapSettings.lightmaps = lightMapData0;
LightmapSettings.lightProbes = lightProbe[0];
probeComponent.customBakedTexture = reflectionProbe[0];
// ---
// 2キーを押したら
LightmapSettings.lightmaps = lightMapData1;
LightmapSettings.lightProbes = lightProbe[1];
probeComponent.customBakedTexture = reflectionProbe[1];
LightmapSettings.lightmapsに LightmapData型の配列を入れるとライトマップを変更できるようです。
LightmapData型のインスタンスの lightmapColorプロパティにライトマップを設定しています。LightmapData型のインスタンスが1つでも、そのインスタンスを1つ目の要素とした配列を作らないとうまくいきません。
ライトプローブは、LightmapSettings.lightProbesにそのまま代入するだけです。
ライトプローブを変えないと、動くオブジェクトへのライトが変わりません。