Runtime generated mesh is not shaded right,only grey?

Hello to all,

I am trying to draw a cube at runtime but I am getting a result something like in the image. What would be the possible reasons for that? Thank you.

74474-asdsada.png

Edit: Ok I am giving some code too. This is how I create meshes.

    var l = new List<Vector3>();
    var bh = new BuildingHolder(center, l,buildingHeight);
    
    for (int i = 0; i < l.Count; i++)
    {
           l _= l *- bh.Center;*_

}

*BuildingDictionary.Add(center, bh); *
var m = bh.CreateModel();
m.name = “building”;
m.transform.parent = this.transform;
m.transform.localPosition = center;
BuildingHolder.cs
public class BuildingHolder
{
public GameObject GameObject { get; set; }
public Vector3 Center { get; set; }
public float Rotation { get; set; }
public bool IsModelCreated;
private List _verts;
* private float buildingHeight;*

* public BuildingHolder(Vector3 center, List verts, float height)*
{
IsModelCreated = false;
Center = center;
_verts = verts;
* buildingHeight = height;*
}

public GameObject CreateModel()
{
if (IsModelCreated)
return null;

var m = new GameObject().AddComponent();
m.gameObject.transform.position = Center;
* m.Initialize(verts,buildingHeight);
IsModelCreated = true;
return m.gameObject;
_
}*

}
BuildingPolygon.cs
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
class BuildingPolygon : MonoBehaviour
{

* private static float buildingHeight;*

* public void Initialize(List verts, float height)*
{
GetComponent().mesh = CreateMesh(verts);
* GetComponent().material = Resources.Load(“BuildingMat”) as Material;*
* buildingHeight = height;*
* }*
private static Mesh CreateMesh(List verts)
{
var tris = new Triangulator(verts.Select(x => x.ToVector2xz()).ToArray());
var mesh = new Mesh();

* var vertices = verts.Select(x => new Vector3(x.x, 0, x.z)).ToList();*
var indices = tris.Triangulate().ToList();
//var uv = new List();

var n = vertices.Count;
for (int index = 0; index < n; index++)
{
var v = vertices[index];
* vertices.Add(new Vector3(v.x, buildingHeight, v.z));*
}

for (int i = 0; i < n - 1; i++)
{
indices.Add(i);
indices.Add(i + n);
indices.Add(i + n + 1);
indices.Add(i);
indices.Add(i + n + 1);
indices.Add(i + 1);
}

indices.Add(n - 1);
indices.Add(n);
indices.Add(0);

indices.Add(n - 1);
indices.Add(n + n - 1);
indices.Add(n);

mesh.vertices = vertices.ToArray();
mesh.triangles = indices.ToArray();

mesh.RecalculateNormals();
mesh.RecalculateBounds();

return mesh;
}
}

You’ve not assigned any normals to the mesh. Take a look at the wiki for an example how: http://wiki.unity3d.com/index.php/ProceduralPrimitives#C.23_-_Box