嘉兴模板建站软件,网站建设新闻资讯,网页设计模板素材营销型首页,东莞网络推广哪家公司奿Unity中MeshFilter中的Mesh默认情况下使用MeshTopology.Trigangles类型绘制网格#xff0c;就是通常的绘制三角形网格#xff0c;实际上Mesh有五种绘制模式#xff0c;对应MeshTopology的枚举#xff0c;分别是
Triangles网格由三角形构成。Quads网格由四边形构成。Lines网… Unity中MeshFilter中的Mesh默认情况下使用MeshTopology.Trigangles类型绘制网格就是通常的绘制三角形网格实际上Mesh有五种绘制模式对应MeshTopology的枚举分别是
Triangles网格由三角形构成。Quads网格由四边形构成。Lines网格由线条构成。LineStrip网格是线条带。Points网格由点构成。 这里以Lines和Quads为例说明Trigangles方式之外的绘制方式。 效果如下 参考代码如下
using System.Collections.Generic;
using UnityEngine;public class LineMeshTest : MonoBehaviour
{[SerializeField]Material material;void Start(){GameObject circle new GameObject(Circle);circle.transform.SetParent(transform);circle.transform.localPosition new Vector3(-5, 0, 0);MeshFilter filterCircle circle.AddComponentMeshFilter();Mesh meshCircle GetCircleMesh(2);filterCircle.mesh meshCircle;MeshRenderer renderCircle circle.AddComponentMeshRenderer();renderCircle.material material;GameObject quad new GameObject(Quad);quad.transform.SetParent(transform);quad.transform.localPosition new Vector3(5, 0, 0);MeshFilter filterQuad quad.AddComponentMeshFilter();Mesh meshQuad GetQuadMesh(5);filterQuad.mesh meshQuad;MeshRenderer rendeQuad quad.AddComponentMeshRenderer();rendeQuad.material material;}Mesh GetCircleMesh(float radius){ListVector3 vertexList new();Listint indexList new Listint();float radDelta Mathf.PI / 36;for (float i 0; i 72f; i){float rad radDelta * i;Vector3 vert new(radius * Mathf.Cos(rad), radius * Mathf.Sin(rad), 0);vertexList.Add(vert);}indexList.Add(0);for (int i 1; i 72; i){indexList.Add(i);indexList.Add(i);}indexList.Add(0);Mesh mesh new();mesh.SetVertices(vertexList);mesh.SetIndices(indexList.ToArray(), MeshTopology.Lines, 0);return mesh;}Mesh GetQuadMesh(float size){float s size * 0.5f;Vector3[] vertices new[] { new Vector3(s, s, 0), new Vector3(s, -s, 0), new Vector3(-s, -s, 0), new Vector3(-s, s, 0) };int[] indices new[] { 0, 1, 2, 3 };Mesh mesh new Mesh();mesh.SetVertices(vertices);mesh.SetIndices(indices, MeshTopology.Quads, 0);return mesh;}
}这个例子里面使用Mesh绘制了一个圆形线条注意这两行语句
mesh.SetIndices(indexList.ToArray(), MeshTopology.Lines, 0);
mesh.SetIndices(indices, MeshTopology.Quads, 0);