转自:
https://www.cnblogs.com/lyh916/p/9162463.html
https://blog.csdn.net/jk823394954/article/details/53870779
一.图形绘制
1.绘制三角形
using UnityEngine;
using UnityEngine.UI;
public class TestMesh : BaseMeshEffect {
public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
vh.AddVert(new Vector3(0, 0), Color.red, Vector2.zero);
vh.AddVert(new Vector3(0, 100), Color.green, Vector2.zero);
vh.AddVert(new Vector3(100, 100), Color.black, Vector2.zero);
vh.AddTriangle(0, 1, 2);
}
}

2.绘制正方形(绘制两个三角形)
using UnityEngine;
using UnityEngine.UI;
public class TestMesh : BaseMeshEffect {
public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
vh.AddVert(new Vector3(0, 0), Color.red, Vector2.zero);
vh.AddVert(new Vector3(0, 100), Color.green, Vector2.zero);
vh.AddVert(new Vector3(100, 100), Color.black, Vector2.zero);
vh.AddVert(new Vector3(100, 0), Color.blue, Vector2.zero);
vh.AddTriangle(0, 1, 2);
vh.AddTriangle(2, 3, 0);
}
}

3.绘制正方形(绘制一个正方形)
using UnityEngine;
using UnityEngine.UI;
public class TestMesh : BaseMeshEffect {
public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
UIVertex[] verts = new UIVertex[4];
verts[0].position = new Vector3(0, 0);
verts[0].color = Color.red;
verts[0].uv0 = Vector2.zero;
verts[1].position = new Vector3(0, 100);
verts[1].color = Color.green;
verts[1].uv0 = Vector2.zero;
verts[2].position = new Vector3(100, 100);
verts[2].color = Color.black;
verts[2].uv0 = Vector2.zero;
verts[3].position = new Vector3(100, 0);
verts[3].color = Color.blue;
verts[3].uv0 = Vector2.zero;
vh.AddUIVertexQuad(verts);
}
}

二.相关api
using UnityEngine;
using UnityEngine.UI;
public class TestMesh : BaseMeshEffect {
public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
vh.AddVert(new Vector3(0, 0), Color.red, Vector2.zero);
vh.AddVert(new Vector3(0, 100), Color.green, Vector2.zero);
vh.AddVert(new Vector3(100, 100), Color.black, Vector2.zero);
vh.AddVert(new Vector3(100, 0), Color.blue, Vector2.zero);
vh.AddTriangle(0, 1, 2);
vh.AddTriangle(2, 3, 0);
//顶点有4个,索引有6个
Debug.Log(vh.currentIndexCount);
Debug.Log(vh.currentVertCount);
//PopulateUIVertex,返回顶点数据。当前取值范围:0-3
UIVertex vertex = new UIVertex();
vh.PopulateUIVertex(ref vertex, 0);
Debug.Log(vertex.color);
vh.PopulateUIVertex(ref vertex, 3);
Debug.Log(vertex.color);
//Se

本文详细介绍了在Unity中使用UI系统进行图形绘制的方法,包括如何使用BaseMeshEffect类的子类TestMesh绘制三角形和正方形,以及如何利用VertexHelper API进行更高级的图形操作。文章深入探讨了AddVert、AddTriangle、AddUIVertexQuad等关键函数的使用,并展示了如何批量操作顶点和索引数据,以及如何获取和修改顶点属性。

8474

被折叠的 条评论
为什么被折叠?



