Да, конечно, вот код где назначаются текстуры:

SplatPrototype[] test = new SplatPrototype[3];
float[,,] splatmapData;
int Tw = terrain.terrainData.heightmapWidth - 1;
splatmapData = terrain.terrainData.GetAlphamaps(0, 0, Tw, Tw);
terrain.terrainData.alphamapResolution = Tw;
//float[,,] splatmapData = new float[terrain.terrainData.alphamapWidth, terrain.terrainData.alphamapHeight, terrain.terrainData.alphamapLayers];
test[0] = new SplatPrototype();
test[0].texture = (Texture2D)Resources.Load("grass", typeof(Texture2D));
test[0].tileOffset = new Vector2(0, 0);
test[0].tileSize = new Vector2(15, 15);
test[1] = new SplatPrototype();
test[1].texture = (Texture2D)Resources.Load("Balmoral", typeof(Texture2D));
test[1].tileOffset = new Vector2(0, 0);
test[1].tileSize = new Vector2(15, 15);
test[1].texture.Apply(true);
test[2] = new SplatPrototype();
test[2].texture = (Texture2D)Resources.Load("grydirt2", typeof(Texture2D));
test[2].tileOffset = new Vector2(0, 0);
test[2].tileSize = new Vector2(15, 15);
test[2].texture.Apply(true);
terrain.terrainData.splatPrototypes = test;
а вот кусок, где пытаюсь назначить эти текстуры:
for(int y=0; y < terrain.terrainData.alphamapHeight; y++)
{
for(int x=0; x < terrain.terrainData.alphamapWidth; x++)
{
float height = terrain.terrainData.GetHeight(x,y);
Vector3 splat = new Vector3(0,1,0);
if (height > 10.0) {
splat = Vector3.Lerp(splat, new Vector3(0,0,1), (height-0.5f)*2 );
} else {
splat = Vector3.Lerp(splat, new Vector3(1,0,0), height*2 );
}
splat.Normalize();
splatmapData[x, y, 0] = splat.x;
splatmapData[x, y, 1] = splat.y;
splatmapData[x, y, 2] = splat.z;
}
}
terrain.terrainData.Flush();
Если нужно. могу выслать на мыло все куском.