A better way of manipulating the culling mask. Taken from http://www.gamasutra.com/blogs/CharlesCordingley/20141124/230710/Unity3D_Culling_Mask_Tip.php

November 26, 2014 ยท View on GitHub

using UnityEngine;

public static class CameraExtensions {

public static void LayerCullingShow(this Camera cam, int layerMask) {
    cam.cullingMask |= layerMask;
}

public static void LayerCullingShow(this Camera cam, string layer) {
    LayerCullingShow(cam, 1 << LayerMask.NameToLayer(layer));
}

public static void LayerCullingHide(this Camera cam, int layerMask) {
    cam.cullingMask &= ~layerMask;
}

public static void LayerCullingHide(this Camera cam, string layer) {
    LayerCullingHide(cam, 1 << LayerMask.NameToLayer(layer));
}

public static void LayerCullingToggle(this Camera cam, int layerMask) {
    cam.cullingMask ^= layerMask;
}

public static void LayerCullingToggle(this Camera cam, string layer) {
    LayerCullingToggle(cam, 1 << LayerMask.NameToLayer(layer));
}

public static bool LayerCullingIncludes(this Camera cam, int layerMask) {
    return (cam.cullingMask & layerMask) > 0;
}

public static bool LayerCullingIncludes(this Camera cam, string layer) {
    return LayerCullingIncludes(cam, 1 << LayerMask.NameToLayer(layer));
}

public static void LayerCullingToggle(this Camera cam, int layerMask, bool isOn) {
    bool included = LayerCullingIncludes(cam, layerMask);
    if (isOn && !included) {
        LayerCullingShow(cam, layerMask);
    } else if (!isOn && included) {
        LayerCullingHide(cam, layerMask);
    }
}

public static void LayerCullingToggle(this Camera cam, string layer, bool isOn) {
    LayerCullingToggle(cam, 1 << LayerMask.NameToLayer(layer), isOn);
}

}