示例:自定义UI几何图形
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class VertexHelperTest : MonoBehaviour {
public MeshFilter meshFilter;
public MeshRenderer meshRenderer;
public Mesh mesh;
public Material mat;
public bool emptySquare = false;
private void Awake()
{
if (meshFilter == null)
meshFilter = GetComponent<MeshFilter>();
if (meshRenderer == null)
meshRenderer = GetComponent<MeshRenderer>();
mesh = new Mesh();
meshFilter.mesh = mesh;
meshRenderer.material = mat;
}
void Start ()
{
if (emptySquare)
GenEmptySquareMesh();
else
GenSquareMesh();
}
void GenSquareMesh()
{
Color32 color32 = Color.red;
using (var vh = new VertexHelper())
{
vh.AddVert(new Vector3(0, 0), color32, new Vector2(0f, 0f));
vh.AddVert(new Vector3(0, 100), color32, new Vector2(0f, 1f));
vh.AddVert(new Vector3(100, 100), color32, new Vector2(1f, 1f));
vh.AddVert(new Vector3(100, 0), color32, new Vector2(1f, 0f));
vh.AddTriangle(0, 1, 2);
vh.AddTriangle(2, 3, 0);
vh.FillMesh(mesh);
}
}
void GenEmptySquareMesh()
{
Color32 color32 = Color.green;
using (var vh = new VertexHelper())
{
vh.AddVert(new Vector3(0, 0), color32, new Vector2(0f, 0f));//0
vh.AddVert(new Vector3(0, 50), color32, new Vector2(0f, 0.5f));//1
vh.AddVert(new Vector3(0, 100), color32, new Vector2(0f, 1f));//2
vh.AddVert(new Vector3(50, 100), color32, new Vector2(0.5f, 1f));//3
vh.AddVert(new Vector3(100, 100), color32, new Vector2(1f, 1f));//4
vh.AddVert(new Vector3(100, 50), color32, new Vector2(1f, 0.5f));//5
vh.AddVert(new Vector3(100, 0), color32, new Vector2(1f, 0f));//6
vh.AddVert(new Vector3(50, 0), color32, new Vector2(0.5f, 0f));//7
vh.AddTriangle(0, 1, 7);
vh.AddTriangle(1, 2, 3);
vh.AddTriangle(3, 4, 5);
vh.AddTriangle(5, 6, 7);
vh.FillMesh(mesh);
}
}
}
场景效果