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!