Quick answer: Unity Texture2DArray created at runtime leaking VRAM each level? Texture2DArray doesn't auto-release - call Object.Destroy on the array before reassigning.

Procedural level generates a 256-layer 1024x1024 texture array per level. After three levels, GPU memory is 3GB and growing.

Destroy before reassign

Object.Destroy(oldArray);
material.SetTexture("_Tex", newArray);

Reassignment doesn't release the previous texture. Destroy is explicit.

Resize, don't recreate

For changing layer counts, prefer fewer larger arrays you reuse via SetLayer. Texture allocation is GPU-side; reuse saves real money.

Audit with Memory Profiler

Window > Analysis > Memory Profiler. Texture2DArray entries accumulating between levels = leak.

“Texture lifetime in Unity is manual for runtime-created assets.”

Establish a 'create at session start, reuse at runtime' pattern. Per-level allocation is rarely worth the lifetime burden.