绘制线条代码,其实就是指定至少两个点,然后赋予贴图即可,不废话,上代码;
using UnityEngine; using System.Collections; public class LineT_1 : MonoBehaviour { private LineRenderer lineRender; private int lineLenght=4; private Vector3 v0 =new Vector3(1.0f,0f,0f); private Vector3 v1= new Vector3(0f,1.0f,0f); private Vector3 v2=new Vector3(0f,0f,1.0f); private Vector3 v3=new Vector3(1.0f,0f,0f); // Use this for initialization void Start () { lineRender=GetComponent<LineRenderer>(); lineRender.SetVertexCount(lineLenght); } // Update is called once per frame void Update () { lineRender.SetPosition(0,v0); lineRender.SetPosition(1,v1); lineRender.SetPosition(2,v2); lineRender.SetPosition(3,v3); } }
显示结果如图:
可以看出,这里主要就是用了
lineRender.SetPosition(index,point) 这个函数。第一个参数是当前要设置的点的索引,从0 开始; 第二个参数是这个点位置。是一个vector3 类型的值; 下面来看一下绘制面,上代码:
using UnityEngine; using System.Collections; public class MeshBulider : MonoBehaviour { private Mesh myMesh; private Vector3[] vertices; private Vector2[] uvPoints; // Use this for initialization void Start () { myMesh=GetComponent<MeshFilter>().mesh; vertices=new Vector3[]{new Vector3(5f,0f,0f),new Vector3(0f,5f,0f),new Vector3(0f,0f,5f),new Vector3(-5f,0f,0f),new Vector3(0f,-5f,0f),new Vector3(0f,0f,-5f)}; uvPoints=new Vector2[]{new Vector2(0, 0), new Vector2(0, 5), new Vector2(5, 5),new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)}; } // Update is called once per frame void Update () { myMesh.vertices=vertices; myMesh.uv=uvPoints; //如果不写triangles这个属性的话三角形不会被显示; myMesh.triangles=new int[]{0,1,2,3,4,5}; } }
实际上也是指定点,然后赋予贴图,不同的是绘制面的时候指定点用了两步:
第一:声明并实例化一个vector3 类型的数组(这个数组保存了面的各个顶点,所以,这个数组的元素数量也必须是3的倍数);
第二:为mesh 的triangles 属性赋值 ,其值是一个int类型的数组,元素个数与声明的顶点数组一一对应;
运行结果如图:
检视面板:
从图中也可以看出,贴图的渲染也是从第一个点开始渲染的,第一个点就是渲染贴图开始地方,对应贴图的左下角(这个不知道说的对不对,眼下是这么觉的~)。~~~
欢迎大家和我一起一起学习,一起进步~
时间: 2024-10-03 21:17:37