首先创建Unity工程,接着创建一个空的游戏对象,然后给该游戏对象绑定Mesh Filter组件 与 Mesh Renderer组件。
Mesh Filter组件:表示网格面,这个网格面是由我们使用代码将所有三角形拼接起来生成的面。

Mesh Renderer组件:表示表示网格的渲染,可设置一个渲染的材质,它包括贴图与颜色。

如下图所示,我说说里面比较重要的属性。Mesh Renderer中,Materials下拉列表中可设置网格模型的材质,此时我们设置了一个红色的材质。 Mesh Filter:目前为None,也不用再编辑器中为它赋值,因为这个网格模型我们会在代码中生成并且赋值。在下面就是方刚我们设置绿色的材质资源,Shader中设置了贴图的属性,目前是GUI/ TextShader。它表示这个材质的渲染级别在GUI上,就是优先级是最一层的。举个例子无论在这个网格模型的前面绘制多少模型,它永远都会在最前面显示。

OK,现在资源文件都已经准备完毕,下面我们学习如何来绘制一个三角形,从简单的开始。把下面的代码绑定在摄像机对象当中。

using UnityEngine;
using System.Collections;public class Scene : MonoBehaviour {// Use this for initializationvoid Start () {//获取MeshFilter对象  现在还是空的。MeshFilter meshFilter = (MeshFilter)GameObject.Find("MeshMat").GetComponent(typeof(MeshFilter));//得到对应的网格对象Mesh mesh = meshFilter.mesh;//三角形顶点坐标数组Vector3[] vertices = new Vector3[3];//三角形的坐标点  ,这里先不考虑Z轴vertices[0] = new Vector3(0,0,0);vertices[1] = new Vector3(0,1,0);vertices[2] = new Vector3(1,0,0);//三角形顶点数组IDint[] triangles = new int[3];triangles[0] = 0;triangles[1] = 1;triangles[2] = 2;//这里是将模型的顶点数组与坐标数组赋值给网络模型,还记得刚刚在//创建MeshFilter时,当时没有在编辑器里为网络模型赋值,实际上代码走到这里就会重新为//    网络模型创建MeshFilter赋值的,接着我们再代码中绘制的三角形就会显示的窗口中mesh.vertices = vertices;mesh.triangles = triangles;}// Update is called once per framevoid Update () {}
}

之后,我们来练习一下绘制4个三角形。

using UnityEngine;
using System.Collections;public class Scene : MonoBehaviour
{private int VERTICES_COUNT = 6;void Start(){MeshFilter meshFilter = (MeshFilter)GameObject.Find("MeshMat").GetComponent(typeof(MeshFilter));Mesh mesh = meshFilter.mesh;Vector3[] vertices = new Vector3[VERTICES_COUNT];int triangles_count = VERTICES_COUNT -2;vertices[0] = new Vector3(0,0,0);vertices[1] = new Vector3(0,1,0);vertices[2] = new Vector3(1,0,0);vertices[3] = new Vector3(1,1,0);vertices[4] = new Vector3(2,0,0);vertices[5] = new Vector3(2,1,0);int[] triangles = new int[triangles_count * 3];triangles[0] = 0;triangles[1] = 1;triangles[2] = 2;triangles[3] = 3;triangles[4] = 2;triangles[5] = 1;triangles[6] = 2;triangles[7] = 3;triangles[8] = 4;triangles[9] = 5;triangles[10] = 4;triangles[11] = 3;mesh.vertices = vertices;mesh.triangles = triangles;}
}

改进算法后。

using UnityEngine;
using System.Collections;public class Scene : MonoBehaviour
{private int VERTICES_COUNT = 6;void Start(){MeshFilter meshFilter = (MeshFilter)GameObject.Find("MeshMat").GetComponent(typeof(MeshFilter));Mesh mesh = meshFilter.mesh;Vector3[] vertices = new Vector3[VERTICES_COUNT];vertices[0] = new Vector3(0,0,0);vertices[1] = new Vector3(0,1,0);vertices[2] = new Vector3(1,0,0);vertices[3] = new Vector3(1,1,0);vertices[4] = new Vector3(2,0,0);vertices[5] = new Vector3(2,1,0);int triangles_count = VERTICES_COUNT - 2;int[] triangles = new int[triangles_count * 3];for(int i =0;i < 4; i++){for(int j =0;j < 3;j++){if(i % 2 ==0){triangles[i* 3 +j] = i+j;}else{triangles[i * 3 +j] = i + 2 -j;}}}mesh.vertices = vertices;mesh.triangles = triangles;}
}

Unity 画三角形相关推荐

  1. 用border画三角形

    <html> <head> <title>用border画三角形</title> <style>#one{width:0px;height: ...

  2. html5 css 三角形,css怎么画三角形?

    css怎么画三角形?下面本篇文章就来给大家介绍一下使用CSS画三角形的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. css怎么画三角形? 三角形实现原理:宽度width为0: ...

  3. splitpane如何设置竖条的宽度_如何用 CSS 画三角形和箭头

    三角形和箭头这两个图标在网页中经常会用到,例如:下拉选择框.排序.返回到上一页.导航条,分页都会用到三角形或者箭头,当然是用图片的方式的确可以实现这一样式,但是是用图片如果调整颜色那就比较困难了,除非 ...

  4. python编程怎么画三角形的外接圆_用MATLAB画三角形外接圆

    用 MATLAB 画三角形的外接圆 clear all ;close all ; clc; %1. 画三角形 : 随机产生三个顶点坐标,将各顶点连接. a=[x1,y1;x2,y2;x3,y3] a= ...

  5. 前端怎么画三角形_css如何画三角形?

    我们在平时的前端开发的时候,有时候是需要一些小图形来丰富一下页面效果,比如:下拉列表的倒三角图形.那么这样的一个三角形是如何制作出来的.下面本篇文章就来给大家介绍一下使用css如何画三角形的方法,希望 ...

  6. canvas画三角形

    万丈高楼平地起,从零开始,使用 canavas 画三角形 <!DOCTYPE html> <html lang="en"> <head>< ...

  7. Turtle 画方形 画圆 画三角形

    Turtle 画方形 画圆 画三角形 参考文档https://docs.python.org/3/library/turtle.html?highlight=turtle%20circle#turtl ...

  8. css画直角三角形,关于CSS画三角形的那些事

    用CSS画一个三角形,是不难的问题,但我却掌握的不够熟练,例如当要求为画一个直角三角形或者等腰三角形,我就有点反应不过来.所以,在这篇中点透它,以后再见,不含糊. 原理分析 用CSS画三角形,实际上就 ...

  9. 前端怎么画三角形_css画出三角形和梯形

    用CSS画三角形 ​ 我们都知道在html中,想要画出圆形,椭圆,矩形,都很简单,但是常见的三角形,梯形如何用纯css画出却较麻烦,许多时候都是直接用三角形的图片.本文将介绍如何用纯css画出三角形和 ...

最新文章

  1. UML建模之数据建模
  2. 面试官问的hibernate和mybatis常见面试题
  3. JS之 if语句函数 对接事件动作 函数更改css css对接需要换妆的区id或class
  4. 使用URLRewriter实现URL重写
  5. Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0...
  6. [LeetCode]29 两数相除和一个小坑点
  7. Android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)
  8. 如果有什么想不开或者放不下的话,看看这里吧!(摘于网络)
  9. Composition-API
  10. BASIC语言、FreeBasic语言
  11. java截取视频图片做封面
  12. Insyde uefi 隐藏设置_固件级安全,微软安全工具新增UEFI扫描功能
  13. Android studio引入XUI
  14. 对角安装的双舵轮AGV运动学核心算法
  15. HTML——响应式布局
  16. 《Android编程权威指南(第三版)》第五章挑战练习Demo
  17. Python求圆的面积和周长
  18. 【摸鱼神器】基于python的BOSS识别系统
  19. 京东接口对接流程(以下举例物流接口):
  20. 鲸鸿动能流量变现服务中国大陆地区测试流程

热门文章

  1. 测试环境docker-swarm安装部署
  2. English Learning NetSource
  3. ARM和Intel处理器区别简介
  4. python中breakpoint_Python3.7 特色(2)-breakpoint 內建除錯
  5. 三维形体的数据结构(1)半边数据结构
  6. 用一生的漫长,等待最初的绿色
  7. apicloud打开地图导航
  8. 自己封装的CMusic类 【转】
  9. 几个重要的排列组合定理公式
  10. 基于SSH网上体育用品销售系统