来自https://blog.csdn.net/qq_14903317/article/details/69668521

自由绘制多边形   https://blog.csdn.net/lei_7103/article/details/54022496

首先在Unity中创建一个物体,并为它添加我们渲染网格需要的组件.


MeshFilter组件用于获取网格信息,我们生成的网格就需要添加到MeshFilter.MeshRenderer用于渲染网格,在这里使用默认的材质来演示.

要生成一个多边形,我们应该要有多边形的顶点数组.现在开始定义我们的变量
    //顶点数组
public Vector3[] Vertexes;
//网格过滤器
private MeshFilter _meshFilter;
//网格
private Mesh _mesh;

接下来我们根据顶点动态生成一个网格.网格都是由三角形组成的,所以我们应该根据顶点数量求出三角形数量,
然后需要确定每个三角形的顶点在我们的顶点数组中的索引.下面上代码
    public void Refresh()
{
//得到三角形的数量
int trianglesCount = Vertexes.Length - 2; //三角形顶点ID数组
int[] triangles = new int[trianglesCount * 3]; //绘制三角形
_mesh.vertices = Vertexes; //三角形顶点索引,确保按照顺时针方向设置三角形顶点
for (int i = 0; i < trianglesCount; i++)
{
for (int j = 0; j < 3; ++j)
{
triangles[i * 3 + j] = j == 0 ? 0 : i + j;
}
}
_mesh.triangles = triangles;
_meshFilter.mesh = _mesh;
}

虽然只有短短几行代码,**但是值得注意的是我们生成三角形的顶点顺序必须为顺时针方向**.所以在传入顶点的时候我们应该按照顺时针方向传入顶点.
Vertexes = new Vector3[] { Vector3.zero, new Vector3(-1, 1, 0), new Vector3(1, 2, 0), new Vector3(2, -1, 0) };

现在生成的四边形如下:

生成的绿色三角形使我们的第一个三角形,顶点顺序为0, 1, 2(顺时针方向), 黄色三角形顶点顺序为0,2,3(顺时针方向),每个三角形的顶点顺序都是为顺时针方向,这样我们看到的面才是正方向的.如果我们的顶点为逆时针顺序,那么我们看到的面为反方向的.如下:


我们就需要把视角调整到背面才能看到四边形,在正面是看不见的.注意观察坐标轴.

Unity3D动态生成多边形的更多相关文章

  1. Unity3D独立游戏开发日记(一):动态生成树木

    目前写的独立游戏是一个沙盒类型的游戏.游戏DEMO视频如下: 提到沙盒类型的游戏,就有人给出了这样的定义: 游戏世界离现实世界越近,自由度.随机度越高才叫沙盒游戏.所谓自由度,就是你在游戏里想干啥就干 ...

  2. Unity3D动态加载外部资源

    最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别.Resources ...

  3. Unity3d 动态加载场景物件与缓存池的使用

    聊聊Unity3d动态加载场景物件那些事儿. 众所周知,在策划或美术设计完游戏场景地图后,一个场景中可能会存在成千上万个小的物件,比如石头,木箱子,油桶,栅栏等等等等,这些物件并不是游戏中的道具,仅仅 ...

  4. 动态生成navmeshi-进击的新版NavMesh系统:看我飞檐走壁

    http://forum.china.unity3d.com/thread-25421-1-1.html0x00 前言 unity5.6作为Unity5最后的一个版本,的确起到了一个承上启下的作用.除 ...

  5. Aop动态生成代理类时支持带参数构造函数

    一.背景 在某些情况下,我们需要植入AOP代码的类并没有默认构造函数.那么此时动态生成的代理类也需要相同签名的构造函数,并且内部调用原始类的构造函数.自己折腾了1晚上没搞定,现在搞定了发出来供大家一起 ...

  6. dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来

    dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...

  7. ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi

    点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.N ...

  8. 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档

    通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...

  9. jquery动态生成的元素添加事件的方法

    动态生成的元素如果要添加事件,要写成 $(document).on("click", "#txtName", function() { alert(this.v ...

随机推荐

  1. 【.NET】asp.net Redirect 图片路径

    #需求: 前端通过<img>的src向服务端请求图片信息,如果不存在想要的图片,那么就返回一张默认路径下的图片: #实现: <img class="related_reso ...

  2. IE6浏览器的bug问题及相关解决的方法

    IE6浏览器的bug问题及相关解决的方法 1.css浮动边距加倍错误(双倍边距BUG)的解决办法   该错误只影响ie而不影响其他浏览器,我们可以考虑用hack来解决!!!   解决方法:_displ ...

  3. Ubuntu 云服务器上部署自己的 Rails 应用

    自学rails一段时间了,之前只用heroku部署了网站,想尝试把网站以一个更“正经”的方式呈现出来,就买了一个阿里云服务器.参考了网上部分rails部署教程,过程中也遇到了一些问题,所以在完成之后总 ...

  4. Shell编程(五)脚本语法

    ${}: 数据“内容”删除,替换:{}: 列表 1. 条件测试: test =~:正则匹配 2. if/then/elif/else/fi #!/bin/bash echo "Is it o ...

  5. 启用SQL Server 2014 中的OLE 自动化功能

    企业中很多架构都在快走向Service概念,尽量采用平台服务方式提供给各个Application使用.因此,个系统都会去呼叫像是Web Service,WCF或ODATA…等等各种类型的服务.一般来说 ...

  6. lua与C/C++交互概要

    转 http://blog.csdn.net/wildfireli/article/details/22307635 Lua生来就是为了和C交互的,因此使用C扩展Lua或者将Lua嵌入到C当中都是非常 ...

  7. luogu P3233 [HNOI2014]世界树

    传送门 我是什么时候写的这题的qwq 首先,发现关键点的总数被限制了,很自然想到虚树,并且,对于一个关键点,他管理的点显然是一个联通块 然后把虚树先建出来,然后两次dfs,第一次是向祖先更新离每个点最 ...

  8. Codeforces Round #536 (Div. 2)

    前言 如您所见这又是一篇咕了的文章,直接咕了10天 好久没打CF了 所以还是个蓝名菜鸡 机房所有人都紫名及以上了,wtcl 这次前4题这么水虽然不知道为什么花了1h,结果不知道为什么搞到一半出锅了,后 ...

  9. PHP入门知识

    一.搭建开发环境 想要使用一门后端语言,当然是要先搭建开发环境,模拟出服务器环境,不然怎么体现出后端,所以就先大众使用使用的Apache.Mysql,如果不想那么多折腾,建议直接使用xampp或者wa ...

  10. ORA-01882 timezone region not found

    解决方案有2个 1.在java运行环境中添加配置,制定时区 -Duser.timezone=GMT 2.修改系统时区 linux 下 1. 查看当前时区 date -R 2. 修改设置时区 方法(1) ...