Can't Re-Enable Lightmaps after Disabling Them at Runtime

I’m trying to disable and re-enable my scene’s lightmaps at runtime, but the script I’m using (obtained from here) is only half working.

using UnityEngine;
using System.Collections;

public class UseLightmap : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
		if (Input.GetKeyDown("up"))
		{
			Change(1);
		}

		if (Input.GetKeyDown("down"))
		{
			Change(0);
		}
	}

	void Change (int i) {

		// Save reference to existing scene lightmap data.
		LightmapData[] lightmap_data = LightmapSettings.lightmaps;

		if (i == 0)
		{
			// Disable lightmaps in scene by removing the lightmap data references
			LightmapSettings.lightmaps = new LightmapData[]{};
		}

		if (i == 1)
		{
			// Reenable lightmap data in scene.
			LightmapSettings.lightmaps = lightmap_data;
		}
	}
}

In this script I’m using the up and down arrow keys to test the on/off functions. The problem is that while I can successfully turn the lightmaps off, I can’t turn them back on. I suspected that the functions might be incorrectly placed, but I couldn’t seem to figure out what the correct placement would be.

I mostly use JS and am not very experienced with C#, so this might not be an ideal setup I have here. I suspect the problem is something simple that I’m just overlooking, but I’ve run into a dead end. Arrays have never been my strong point.

If someone could help me figure out what I’m doing wrong, that would be wonderful!

You’re clearing the LightmapSettings and storing it with blank lightmap data, so it will be blank when you re-enable it. Basically you just need to move that line where you store the existing lightmap.

public class UseLightmap : MonoBehaviour {
	
	LightmapData[] lightmap_data;

	// Use this for initialization
	void Start () {
        // Save reference to existing scene lightmap data.
		lightmap_data = LightmapSettings.lightmaps;
	}

	// Update is called once per frame
	void Update () {

		if (Input.GetKeyDown("up"))
		{
			Change(1);
		}
		if (Input.GetKeyDown("down"))
		{
			Change(0);
		}
	}

	void Change (int i) {
		if (i == 0)
		{
			// Disable lightmaps in scene by removing the lightmap data references
			LightmapSettings.lightmaps = new LightmapData[]{};
		}
		if (i == 1)
		{
			// Reenable lightmap data in scene.
			LightmapSettings.lightmaps = lightmap_data;
		}
	}
}