[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文 ...
随机推荐
- centos下cmake编译安装mysql5.7.24
一.centos6.5推荐最小安装.自定义添加如图两个包 二.安装cmake3.0(mysql5.7要求cmake2.9以上.cmake3.1要求gcc g++4.8以上.所以选自3.0) 1.分别执 ...
- mvc 部署到iis 提示错误未能加载文件或程序集System.Web.Http.WebHost
Nuget程序包管理 —>程序包管理控制台,运行以下命令即可: Update-Package Microsoft.AspNet.WebApi -reinstall
- Ribbon 负载均衡机制
Ribbon 提供了几个负载均衡的组件,其目的就是让请求转给合适的服务器处理,因此,如何选择合适的服务器变成了负载均衡机制的核心,Ribbon 提供了如下负载均衡规则: RoundRobinRule: ...
- IndexR
IndexR是由舜飞科技研发的实时OLAP系统.于 2017 年 1 月初正式开源,目前已经更新至 0.6.1 版本,其作者认为IndexR具有以下特点: 超大数据集,低查询延时(超大数据集由HDFS ...
- linux环境下python的pdb调试方法
一些常用指令: h(elp) [comman] #打印可用指令及帮助信息 r(eturn) #运行代码直到下一个断点或当前函数返回 b(reak) [[filename:]lineno | fun ...
- Xshell配置ssh使用密钥公钥(publice key)登录
ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法. 使用密钥登录分为3步:1.生成密钥( ...
- WPF DataGrid添加编号列
WPF DataGrid添加编号列? 第一步:<DataGridTemplateColumn Header="编号" Width="50" MinWidt ...
- debian下erlang新版本安装
debian下的erlang版本太老 安装kerl,并且在profile内添加到PATH curl -o ~/dev/erlang/kerl https://raw.githubusercontent ...
- DS二叉树--二叉树之父子结点
题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构. 编写程序输出该树的所有叶子结点和它们的父亲结点 输入 第一 ...
- 转自高手关于SQL 锁的叙述。。(nolock,rowlock,tablock,xlock,paglock)
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: [丢失更新]A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ...