Uinty 使用代码绘制一个Quad

Uinty 使用代码绘制一个Quad

效果

生成的Quad

代码

//首先创建一个空物体
GameObject gameObject=new GameObject();
//添加组件
gameObject.AddComponent<MeshFilter>();
//得到它的mesh
Mesh mesh = gameObject.GetComponent<MeshFilter>().mesh;

//创建Mesh所需的空数据
//4个顶点组成一个正方形
Vector3[] vectices = new Vector3[4];
//一个方格需要2个三角形,每个三角形是3个顶点
int[] triangles = new int[6];
//uv也要4个点
Vector2[] uvs = new Vector2[4];

//创建顶点 4个顶点
int vIndex = 0;
int vIndex0 = vIndex;
int vIndex1 = vIndex + 1;
int vIndex2 = vIndex + 2;
int vIndex3 = vIndex + 3;

//位置由GameObject控制,所以这里不需要再修改基础点的位置
Vector3 pos = Vector3.zero;
//左下 左上 右上 右下
vectices[vIndex0] = pos;
vectices[vIndex1] = pos + new Vector3(0, 1);
vectices[vIndex2] = pos + new Vector3(1, 1);
vectices[vIndex3] = pos + new Vector3(1, 0);

//创建uv
Vector2 uv00 = new Vector2(0,0);
Vector2 uv11 = new Vector2(1f, 1f);

//正常顺序
//uvs[0] = new Vector2(0, 0);
//uvs[1] = new Vector2(0, 1);
//uvs[2] = new Vector2(1, 1);
//uvs[3] = new Vector2(1, 0);

//猜测顺序
uvs[vIndex0] = new Vector2(uv00.x, uv00.y);
uvs[vIndex1] = new Vector2(uv00.x, uv11.y);
uvs[vIndex2] = new Vector2(uv11.x, uv11.y);
uvs[vIndex3] = new Vector2(uv11.x, uv00.y);

//创建三角形 有6个点 按照逆时针绘制
int tIndex = 0;
triangles[tIndex] = vIndex0;
triangles[tIndex + 1] = vIndex1;
triangles[tIndex + 2] = vIndex2;

triangles[tIndex + 3] = vIndex2;
triangles[tIndex + 4] = vIndex3;
triangles[tIndex + 5] = vIndex0;

//赋值给mesh
mesh.vertices = vectices;
mesh.triangles = triangles;
mesh.uv = uvs;

//添加MeshRenderer
gameObject.AddComponent<MeshRenderer>();
//设置Shader
gameObject.GetComponent<MeshRenderer>().material = new Material(Shader.Find("Unlit/Texture"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值