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 update
-
void 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 frame
-
void Update()
-
{
-
-
}
-
}
运行后
然后画正方体
想要看到下面就要逆着画
-
using System.Collections;
-
using System.Collections.Generic;
-
using UnityEngine;
-
using UnityEngine.UI;
-
-
public class Creatcube : MonoBehaviour
-
{
-
// Start is called before the first frame update
-
void 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 frame
-
void 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 update
-
void 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 frame
-
void Update()
-
{
-
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhficeci
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24