I thought this was possible in c#:
int ndetails = terrainData.detailPrototypes.Length;
int [][,] details = new int[ndetails][terrainData.detailResolution,terrainData.detailResolution];
...create detail data here....
for (int i =0; i < ndetails; i++) {
terrainData.SetDetailLayer(0,0,System.Array. details[i]);
}
But I get an ‘invalid rank specifier’ error in Unity.
If I do a rectangular array, I have to recompose a array like this, which seems wasteful:
int ndetails = terrainData.detailPrototypes.Length;
int [,,] details = new int[ndetails,terrainData.detailResolution,terrainData.detailResolution];
...
for (int i =0; i < ndetails; i++) {
int [,] tmp = new int[terrainData.detailResolution,terrainData.detailResolution];
...transfer 3d array array to 2d array here...
terrainData.SetDetailLayer(0,0, tmp);
}