失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Unity 网格画图形

Unity 网格画图形

时间:2024-09-10 00:21:15

相关推荐

Unity 网格画图形

鹅肉网格画图形就是画三角形

画一个正方形

建一个空物体加一些组件Mesh Filter,Mesh Renderer.

找到对应顶点(AddVert添加顶点),就可以绘制了(顶点是可以变得),我就绘制了正面。(顺指针绘制可以看到正面,逆时针看到后面,想要正反都看到,就正反都绘制)

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Creatsquare : MonoBehaviour{// Start is called before the first frame updatevoid Start(){Mesh mesh = new Mesh();VertexHelper vh = new VertexHelper();vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(0, 1));vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(1, 1));vh.AddTriangle(0, 1, 3);vh.AddTriangle(0, 3, 2);vh.FillMesh(mesh);GetComponent<MeshFilter>().mesh = mesh;}// Update is called once per framevoid Update(){}}

运行后

然后画正方体

想要看到下面就要逆着画

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Creatcube : MonoBehaviour{// Start is called before the first frame updatevoid Start(){Mesh mesh = new Mesh();VertexHelper vh = new VertexHelper();//正面vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(0, 1));//右面vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 0, 1), Color.white, new Vector2(0, 1));//后面vh.AddVert(new Vector3(1, 0, 1), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(1, 1, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(0, 1, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(0, 0, 1), Color.white, new Vector2(0, 1));//左面vh.AddVert(new Vector3(0, 0, 1), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 1));//上面vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(0, 1));//下面vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 0, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 0, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(0, 1));//正面vh.AddTriangle(0, 1, 2);vh.AddTriangle(0, 2, 3);//右面vh.AddTriangle(4, 5, 6);vh.AddTriangle(4, 6, 7);//后面vh.AddTriangle(8,9,10);vh.AddTriangle(8,10,11);//左面vh.AddTriangle(12,13,14);vh.AddTriangle(12,14,15);//上面vh.AddTriangle(16, 17, 18);vh.AddTriangle(16, 18, 19);//下面vh.AddTriangle(20, 23, 22);vh.AddTriangle(20, 22, 21);vh.FillMesh(mesh);GetComponent<MeshFilter>().mesh = mesh;}// Update is called once per framevoid Update(){}}

最后画个圆

找到对应三角形顶点

找到渲染图片位置

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Creatcircle : MonoBehaviour{int num = 100;//三角形个数int r = 1;//半径// Start is called before the first frame updatevoid Start(){Mesh mesh = new Mesh();VertexHelper vh = new VertexHelper();//圆float ang = (2 * Mathf.PI) / num;//弧度vh.AddVert(new Vector3(0, 0, 0), Color.red, new Vector2(0.5f, 0.5f));//原点for (int i = 0; i < num; i++){float x = Mathf.Sin(ang * i) * r;float y = Mathf.Cos(ang * i) * r;float uvx = (x + r) / (2 * r);float uvy = (y + r) / (2 * r);vh.AddVert(new Vector3(x, y, 0), Color.red, new Vector2(uvx, uvy));if (i == 0){vh.AddTriangle(0, num, 1);}else{vh.AddTriangle(0, i, i + 1);}}vh.FillMesh(mesh);GetComponent<MeshFilter>().mesh = mesh;}// Update is called once per framevoid Update(){}}

如果觉得《Unity 网格画图形》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。