How do I assign the cull threshold on LODGroup in C#?

I’m generating lots of gameObjects with LODGroups procedurally. I’m able to populate renderers into the LODGroup, and to define the screen space which causes a switch from LOD0 to LOD1 etc. But I’m unable to set the cull threshold. It seems to always want to be at 2%.
I need to be able to do this in C#, and not manually per object.

Anyone familiar with the syntax to adjust the cull in LODGroup? Thanks either way.

Wow - reply to a year old question…

The issue was that I mistook the “cull” LOD for a separate component that required a manual assignment, when in fact, all I had to do was to specify the screenRelativeTransitionHeight value on the lowest LOD to zero. This meant that the lowest-level LOD would be in effect until screen-scale zero, and so no cull would ever be necessary.

For instance:
Renderer renOne = new Renderer[1];
Renderer renTwo = new Renderer[1];
Renderer renThree = new Renderer[1];
Renderer renFour = new Renderer[1];
renOne[0] = child.Find (child.name+“LOD0”).gameObject.GetComponent();
renTwo[0] = child.Find (child.name+“LOD1”).gameObject.GetComponent();
renThree[0] = child.Find (child.name+“LOD2”).gameObject.GetComponent();
renFour[0] = child.Find (child.name+“LOD3”).gameObject.GetComponent();
child.GetOrAddComponent();
LOD lods = new LOD[4];
lods[0] = new LOD(.3f, renOne);
lods[1] = new LOD(.08f,renTwo);
lods[2] = new LOD(.04f,renThree);
lods[3] = new LOD(.0f,renFour);
child.GetComponent().SetLODs(lods);
child.GetComponent().RecalculateBounds();

The operative code in this example is the third line from the bottom:
lods[3] = new LOD (.0f,renFour);
the screenRelativeTransitionHeight of .0f means the cull group is never used, because lods[3] covers .04f >> .0f

(Lest it’s not obvious, I’m aware of the function of quality settings :wink: Thanks tho.)

there is a unity bug using new LOD(screenRelHeight, Renderers)

use fields manually

Renderer[] renOne = new Renderer[1];
    Renderer[] renTwo = new Renderer[1];
    Renderer[] renThree = new Renderer[1];

    renOne[0] = lod0.gameObject.GetComponent<MeshRenderer>();
    renTwo[0] = lod1.gameObject.GetComponent<MeshRenderer>();
    renThree[0] = lod2.gameObject.GetComponent<MeshRenderer>();
    
    LODGroup lodgroup = gameObject.GetComponent<LODGroup>();

    LOD[] lods = new LOD[3];
    lods[0].screenRelativeTransitionHeight = 0.8f;
    lods[0].renderers = renOne;
    lods[1].screenRelativeTransitionHeight = 0.5f;
    lods[1].renderers = renTwo;
    lods[2].screenRelativeTransitionHeight = 0.2f;
    lods[2].renderers = renThree;
    lodgroup.SetLODs(lods);
    lodgroup.RecalculateBounds();