unity中写一个方法传入一组连续的坐标点方法实现将这些点连成的多边形绘制填色
在Unity中,可以使用Mesh来绘制多边形并填充颜色。下面是一个示例方法,可以传入一组连续的坐标点,并将这些点连成的多边形绘制填色:
using UnityEngine;
public class PolygonDrawer : MonoBehaviour
{
public Material material; // 用于填充的材质
public void DrawPolygon(Vector3[] points)
{
// 创建一个新的Mesh
Mesh mesh = new Mesh();
// 设置顶点坐标
mesh.vertices = points;
// 设置三角形的顶点索引
int[] triangles = new int[(points.Length - 2) * 3];
int index = 0;
for (int i = 1; i < points.Length - 1; i++)
{
triangles[index++] = 0;
triangles[index++] = i;
triangles[index++] = i + 1;
}
// 设置顶点颜色
Color[] colors = new Color[points.Length];
for (int i = 0; i < colors.Length; i++)
{
colors[i] = Color.white;
}
// 设置UV坐标(用于纹理贴图)
Vector2[] uv = new Vector2[points.Length];
for (int i = 0; i < points.Length; i++)
{
uv[i] = new Vector2(points[i].x, points[i].y);
}
// 设置Mesh的其他属性
mesh.triangles = triangles;
mesh.colors = colors;
mesh.uv = uv;
// 创建一个新的GameObject,并将MeshRenderer和MeshFilter组件附加到它上面
GameObject polygonObject = new GameObject("Polygon");
polygonObject.AddComponent<MeshFilter>().mesh = mesh;
MeshRenderer meshRenderer = polygonObject.AddComponent<MeshRenderer>();
meshRenderer.material = material;
}
}
使用示例:
using UnityEngine;
public class Example : MonoBehaviour
{
public PolygonDrawer polygonDrawer;
public Material material; // 用于填充的材质
void Start()
{
// 示例坐标点
Vector3[] points = new Vector3[]
{
new Vector3(0, 0, 0),
new Vector3(1, 0, 0),
new Vector3(1, 1, 0),
new Vector3(0, 1, 0)
};
// 调用方法绘制多边形并填充颜色
polygonDrawer.material = material;
polygonDrawer.DrawPolygon(points);
}
}
在Inspector面板上,将PolygonDrawer脚本挂载到一个空的GameObject上,并将用于填充的材质赋值给material变量。然后将Example脚本挂载到另一个空的GameObject上,并将PolygonDrawer脚本和用于填充的材质分别赋值给polygonDrawer和material变量。
运行游戏后,将会绘制一个由示例坐标点组成的矩形,并填充颜色。
原文地址: https://www.cveoy.top/t/topic/i6nS 著作权归作者所有。请勿转载和采集!