如何实现unity 绘制三角面,一通好找终于被我找到。其实并不是很难,只是我们可能不是很了解这方面知识,所以做起来比较困难。现在我们就来看unity绘制三角面。

因为3D世界中游戏面全都是用三角形来拼起来的(出于效率的考虑),所以大家所看到的面其实都是用三角面拼接起来的。那么下面我们看看在Unity3D 中如何绘制三角形平面。先创建一个GameObject对象,我命名为face,然后给这个对象添加两个Mesh属性, 添加MeshFilter(网格过滤器)与mesh Renderer(网格渲染器)属性,这样子就可以绘制网格面了。
unity 绘制三角面
  1. using UnityEngine;
  2. using System.Collections;
  3. public class Main : MonoBehaviour
  4.  {
  5. // Update is called once per frame
  6. void Update () 
  7. {
  8. //通过object对象名 face 得到网格渲染器对象
  9. MeshFilter meshFilter = (MeshFilter)GameObject.Find("face").GetComponent(typeof(MeshFilter));
  10. //通过渲染器对象得到网格对象
  11. Mesh mesh = meshFilter.mesh;
  12. //API中写的不是提清楚,我详细的在说一遍
  13. //设置顶点,这个属性非常重要
  14. //三个点确定一个面,所以Vector3数组的数量一定是3个倍数
  15. //遵循顺时针三点确定一面
  16. //这里的数量为6 也就是我创建了2个三角面
  17. //依次填写3D坐标点
  18. mesh.vertices = new Vector3[] {new Vector3(5, 0, 0), new Vector3(0, 5, 0), new Vector3(0, 0, 5),new Vector3(-5, 0, 0), new Vector3(0, -5, 0), new Vector3(0, 0, -5)};
  19. //设置贴图点,因为面确定出来以后就是就是2D
  20. //所以贴纸贴图数量为Vector2
  21. //第一个三角形设置5个贴图
  22. //第二个三角形设置一个贴图
  23. //数值数量依然要和顶点的数量一样
  24. mesh.uv = 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)};
  25. //设置三角形索引,这个索引是根据上面顶点坐标数组的索引
  26. //对应着定点数组Vector3中的每一项
  27. //最后将两个三角形绘制在平面中
  28. //数值数量依然要和顶点的数量一样
  29. mesh.triangles= new int []{0,1,2,3,4,5};
  30. }
  31. }
 Build and Run  运行效果后清楚的可以看到两个三角形。MOMO提醒大家 善用三角平面可以绘制出各种各样的游戏面出来噢~哇咔咔~
unity 绘制三角面