[UGUI]修改顶点
参考链接:
https://blog.csdn.net/jk823394954/article/details/53870779
说明:unity版本5.3,新建一个Image,挂上以下的脚本
一.图形绘制
1.绘制三角形
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
vh.AddVert(new Vector3(, ), Color.red, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.green, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.black, Vector2.zero);
vh.AddTriangle(, , );
}
}

2.绘制正方形(绘制两个三角形)
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
vh.AddVert(new Vector3(, ), Color.red, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.green, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.black, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.blue, Vector2.zero);
vh.AddTriangle(, , );
vh.AddTriangle(, , );
}
}

3.绘制正方形(绘制一个正方形)
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
UIVertex[] verts = new UIVertex[]; verts[].position = new Vector3(, );
verts[].color = Color.red;
verts[].uv0 = Vector2.zero; verts[].position = new Vector3(, );
verts[].color = Color.green;
verts[].uv0 = Vector2.zero; verts[].position = new Vector3(, );
verts[].color = Color.black;
verts[].uv0 = Vector2.zero; verts[].position = new Vector3(, );
verts[].color = Color.blue;
verts[].uv0 = Vector2.zero; vh.AddUIVertexQuad(verts);
}
}

二.相关api
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
vh.AddVert(new Vector3(, ), Color.red, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.green, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.black, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.blue, Vector2.zero);
vh.AddTriangle(, , );
vh.AddTriangle(, , ); //顶点有4个,索引有6个
Debug.Log(vh.currentIndexCount);
Debug.Log(vh.currentVertCount); //PopulateUIVertex,返回顶点数据。当前取值范围:0-3
UIVertex vertex = new UIVertex();
vh.PopulateUIVertex(ref vertex, );
Debug.Log(vertex.color);
vh.PopulateUIVertex(ref vertex, );
Debug.Log(vertex.color); //SetUIVertex,设置顶点数据
vertex.color = Color.yellow;
vh.SetUIVertex(vertex, );
}
}
输出:

Stream流批量操作:
1.AddUIVertexStream,批量添加顶点
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
List<UIVertex> verts = new List<UIVertex>(); UIVertex vert0 = new UIVertex();
vert0.position = new Vector3(, );
vert0.color = Color.red;
vert0.uv0 = Vector2.zero;
verts.Add(vert0); UIVertex vert1 = new UIVertex();
vert1.position = new Vector3(, );
vert1.color = Color.green;
vert1.uv0 = Vector2.zero;
verts.Add(vert1); UIVertex vert2 = new UIVertex();
vert2.position = new Vector3(, );
vert2.color = Color.black;
vert2.uv0 = Vector2.zero;
verts.Add(vert2); UIVertex vert3 = new UIVertex();
vert3.position = new Vector3(, );
vert3.color = Color.blue;
vert3.uv0 = Vector2.zero;
verts.Add(vert3); List<int> indices = new List<int>() { , , , , , };
vh.AddUIVertexStream(verts, indices);
}
}

2.AddUIVertexTriangleStream,批量添加三角形顶点,长度必须是3的倍数
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear();
List<UIVertex> verts = new List<UIVertex>(); UIVertex vert0 = new UIVertex();
vert0.position = new Vector3(, );
vert0.color = Color.red;
vert0.uv0 = Vector2.zero;
verts.Add(vert0); UIVertex vert1 = new UIVertex();
vert1.position = new Vector3(, );
vert1.color = Color.green;
vert1.uv0 = Vector2.zero;
verts.Add(vert1); UIVertex vert2 = new UIVertex();
vert2.position = new Vector3(, );
vert2.color = Color.black;
vert2.uv0 = Vector2.zero;
verts.Add(vert2); vh.AddUIVertexTriangleStream(verts);
}
}

3.GetUIVertexStream,获取所有顶点数据
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class TestMesh : BaseMeshEffect { public override void ModifyMesh(VertexHelper vh)
{
vh.Clear(); vh.AddVert(new Vector3(, ), Color.red, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.green, Vector2.zero);
vh.AddVert(new Vector3(, ), Color.black, Vector2.zero);
vh.AddTriangle(, , ); List<UIVertex> stream = new List<UIVertex>();
vh.GetUIVertexStream(stream);
foreach (UIVertex v in stream)
{
Debug.Log(v.color);
}
}
}

[UGUI]修改顶点的更多相关文章
- 在Unity中使用UGUI修改Mesh绘制几何图形
在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...
- unity5.5 ugui使用美术字
文件转载自:http://www.jianshu.com/p/a4e6d1ca3ca0 项目需要使用美术字加强战斗效果表现,按以往NGUI的使用经验,这个应该很简单,随便Google一下都有数篇技术博 ...
- UGUI 文字效果实现(Shadow\Gradient\Outline)
NGUI直接在UILabel组件中接入了Shadow.Gradient和outline选项,但在UGUI中是通过另外的组件单独提供,比如outline.shader等.这篇文章主要记录这几个文字效果实 ...
- 基于Shader实现的UGUI描边解决方案
基于Shader实现的UGUI描边解决方案 前言 大扎好,我系狗猥.当大家都以为我鸽了的时候,我又出现了,这也是一种鸽.创业两年失败后归来,今天想给大家分享一个我最近研究出来的好康的,比游戏还刺激,还 ...
- ugui的优化
参考文章 https://www.jianshu.com/p/061e67308e5f https://www.jianshu.com/p/8a9ccf34860e http://blog.jobbo ...
- (转)Unity 之 UGUI 小总结
转自:http://www.jianshu.com/p/5b6f5022662e 开发过程中对UGUI的一个小总结. 首先从原画师拿到效果图,美术切图,拿到碎图后打成大图. 我们先来说一下图:RGBA ...
- UGUI性能优化
http://www.cnblogs.com/suoluo/p/5417152.html http://blog.csdn.net/uwa4d/article/details/54344423 htt ...
- 关于Unity中的UGUI优化,你可能遇到这些问题
https://blog.uwa4d.com/archives/QA_UGUI-1.html 关于Unity中的UGUI优化,你可能遇到这些问题 作者:admin / 时间:2016年11月08日 / ...
- UGUI表情系统&超链接解决方案
最近帮一个同事解决图文混排的问题,发现了一种犀利的UGUI表情系统的解决方案 https://blog.uwa4d.com/archives/Sparkle_UGUI.html 使用重新生成UGUI文 ...
随机推荐
- linux项目部署常用命令
原文出处:http://blog.csdn.net/u013628152/article/details/45847013 1:执行命令#find / -name tomcat,系统将列出所有tomc ...
- linux环境下python的pdb调试方法
一些常用指令: h(elp) [comman] #打印可用指令及帮助信息 r(eturn) #运行代码直到下一个断点或当前函数返回 b(reak) [[filename:]lineno | fun ...
- msp430学习笔记-ADC12
本文引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013748.HTM MSP430单片机的ADC12模块是一个12位精度的A/D转换模块,它具有高速度,通用性等特 ...
- JS 动态加载脚本的4种方法
有时候我们需要动态的加入适合的js,因为有时候不需要将所有的js都加载进来,以来提高效率,但这种方法比较适合单个js文件比较大的情况 如果js文件都比较小,还是一个js好,这样可以减少连接数.下面是4 ...
- 荣耀9少 gms core服务
1.首先安装gms core即本软件gms安装器,安装时候会重启一次. gms core apk下载地址:http://www.paopaoche.net/android/307559.html 注意 ...
- 阿里巴巴Dubbo实现的源码分析
1. Dubbo概述 Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的方案.它的核心功能包括: #remoting ...
- 跟着未名学Office – 整体了解 Ms Office 2010
目录 MS Office 2010 2 Microsoft Office System 2 Ribbon(功能区) 2 文件选项卡 3 SmartArt 3 屏幕截图 ...
- g6 cavans
{ // 默认模式 default: [ 'dragNode', 'dragEdge', 'dragBlank', 'clickBlankClearActive', 'resizeEdge', 'cl ...
- Espresso 开源了
Google Testing Blog上发布了一篇博客,Espresso 开源了 http://googletesting.blogspot.com/2013/10/espresso-for-andr ...
- shell文件描述符和重定向
1.文件描述符是与一个打开的文件或数据流相关联的整数.文件描述符0,1,2是系统预留的. 0 --------stdin(标准输入) 1 --------stdout(标准输出) 2--------- ...