title: Creating a 2D Circular Mesh in Unity
body: <p>I currently have a "CreateMesh" script that can be put as a component of an object with a Mesh Renderer, and a Mesh Filter, and a 2D mesh is created with a polygon collider in the dimensions of the mesh given a "MeshType" variable is set to either "tri" or "box" (for a triangle and rectangle mesh respectively.) I want to also add the ability to create a circular mesh however from some research I've realised this isn't as simple as I first thought. However I'm yet to find anything that's helping. </p>
  
  <p>This is the code I have for the box and triangle meshes:</p>
  
  <pre><code>public float width = 5f;
  public float height = 5f;
  
  public string meshType;
  
  public PolygonCollider2D polyCollider;
  
  void Start()
  {
      polyCollider = GetComponent&lt;PolygonCollider2D&gt;();
  }
  
  // Update is called once per frame
  void Update () {
      if (meshType == "tri")
      {
          TriangleMesh(width, height);
      }
      if (meshType == "box")
      {
          BoxMesh(width, height);
      }
  
  }
  
  void TriangleMesh(float width, float height)
  {
      MeshFilter mf = GetComponent&lt;MeshFilter&gt;();
      Mesh mesh = new Mesh();
      mf.mesh = mesh;
  
      //Verticies
      Vector3[] verticies = new Vector3[3]
      {
          new Vector3(0,0,0), new Vector3(width, 0, 0), new Vector3(0, height, 0)
      };
  
      //Triangles
      int[] tri = new int[3];
  
      tri[0] = 0;
      tri[1] = 2;
      tri[2] = 1;
  
      //normals
      Vector3[] normals = new Vector3[3];
  
      normals[0] = -Vector3.forward;
      normals[1] = -Vector3.forward;
      normals[2] = -Vector3.forward;
  
      //UVs
      Vector2[] uv = new Vector2[3];
  
      uv[0] = new Vector2(0, 0);
      uv[0] = new Vector2(1, 0);
      uv[0] = new Vector2(0, 1);
  
      //initialise
      mesh.vertices = verticies;
      mesh.triangles = tri;
      mesh.normals = normals;
      mesh.uv = uv;
  
      //setting up collider
      polyCollider.pathCount = 1;
  
      Vector2[] path = new Vector2[3]
      {
          new Vector2(0,0), new Vector2(0, height), new Vector2(width, 0)
      };
  
      polyCollider.SetPath(0, path);
  
  }
  
  void BoxMesh(float width, float height)
  {
      MeshFilter mf = GetComponent&lt;MeshFilter&gt;();
      Mesh mesh = new Mesh();
      mf.mesh = mesh;
  
      //Verticies
      Vector3[] verticies = new Vector3[4]
      {
          new Vector3(0,0,0), new Vector3(0, height, 0), new Vector3(width, height, 0), new Vector3(width, 0, 0)
      };
  
      //Triangles
      int[] tri = new int[6];
  
      tri[0] = 0;
      tri[1] = 1;
      tri[2] = 3;
  
      tri[3] = 1;
      tri[4] = 2;
      tri[5] = 3;
  
      //normals
      Vector3[] normals = new Vector3[4];
  
      normals[0] = -Vector3.forward;
      normals[1] = -Vector3.forward;
      normals[2] = -Vector3.forward;
      normals[3] = -Vector3.forward;
  
      //UVs
      Vector2[] uv = new Vector2[4];
  
      uv[0] = new Vector2(0, 0);
      uv[1] = new Vector2(0, 1);
      uv[2] = new Vector2(1, 1);
      uv[3] = new Vector2(1, 0);
  
      //initialise
      mesh.vertices = verticies;
      mesh.triangles = tri;
      mesh.normals = normals;
      mesh.uv = uv;
  
      //setting up collider
      polyCollider.pathCount = 1;
  
      Vector2[] path = new Vector2[4]
      {
          new Vector2(0,0), new Vector2(0, height), new Vector2(width, height), new Vector2(width, 0)
      };
  
      polyCollider.SetPath(0, path);
  
  }
  </code></pre>
  
  <p>So essentially I want a function that I could call in the update method that would simply create a circular mesh. E.g:</p>
  
  <pre><code>void Update () {
     if (meshType == "tri")
     {
         TriangleMesh(width, height);
     }
     if (meshType == "box")
     {
         BoxMesh(width, height);
     }
     if (meshType == "circle")
     {
         CircleMesh(radius);
     }
  }
  </code></pre>