mesh渲染到ui_在Unity中使用UGUI修改Mesh绘制几何图形

Used by Text, Image, and RawImage for example to generate vertices specific to their use case.

说的是当该控件(例如Text,Image,RawImage)需要改变顶点的时候,就会自动调用。

在传入的vh参数里修改顶点,三角形,UV等,同样可以达到修改mesh的目的。

不过该函数是只有在该Craphic组件需要修改的时候才会调用,比如你修改Image的大小,或者它加载的时候才会。

这样就导致我们没法及时看到我们对mesh的修改,比如用是将一张Image的四个角分别用四个对象表示,这四个对象的

移动,会让这种Image发生形变。但是没法及时更新就没办法了。

还好有SetNativeSize()这个方法,其实跟刷新差不多。

注:新发现,UGUI采用脏标记系统,只要控件被标记为“脏”状态,就会强制刷新一遍,在每次改变了顶点或者纹理后,调用SetVerticesDirty() 或 SetMaterialDirty()即可。

上代码:

// 自己手动刷新

void Update()

{

//SetNativeSize();

SetVerticesDirty();

}

protected override voidOnPopulateMesh(VertexHelper vh)

{Color32 color32=color;

vh.Clear();

// 这里我用5对GameObject的坐标来与该Image对象的五个顶点绑定起来

// AddVert的最后一个参数是UV值

vh.AddVert(pos[0].position, color32, newVector2(0f, 0f));

vh.AddVert(pos[1].position, color32, newVector2(0f, 1f));

vh.AddVert(pos[2].position, color32, newVector2(1f, 1f));

vh.AddVert(pos[3].position, color32, newVector2(1f, 0f));

vh.AddVert(pos[4].position, color32, new Vector2(0.5f, 0f));

vh.AddTriangle(0, 1, 2);

vh.AddTriangle(2, 3, 4);

vh.AddTriangle(2, 4, 0);

}

注:Unity4.6的UGUI, 并不是用OnPopulateMesh来改变顶点,而是用OnFillVBO,用法基本相同,不同的是,4.6的UI的mesh是基于Quad而不是三角形,因此不用像上面那样设置完

顶点后,还需要设置三角形。但注意的是,Quad跟三角形不同的地方就是,它是由4个顶点组成的,因此设置的顶点数必须是4的倍数。设置Quad的时候,只需要4个一组的设置面片即可。

相比较三角形,Quad的概念容易理解,但是顶点的利用率大大降低,比如上面的5边形,用三角形只需要5个顶点,但用Quad则需要8个顶点。

做法3:

想起我之前为了让Text实现渐变效果写的一个扩展方法,就是创建一个组件脚本,这个组件继承BaseMeshEffect,

然后在里面覆写ModifyMesh(Mesh mesh)方法,在该方法内部实现修改mesh即可。

最新的5.3版已经将该方法改成ModifyMesh(VertexHelper vh)(又TM改,我印象中这是第三次改了)

作用以及写法几乎与第二点一样,只是不用继承Graphic组件,这样可以实现比较好的扩展性。把效果做成Effect,

然后所有Graphic组件都可以通过添加该组件来实现扩展。

参考文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python牛顿迭代公式_python计算牛顿迭代多项式实例分析

本文实例讲述了python计算牛顿迭代多项式的方法。分享给大家供大家参考。具体实现方法如下:p evalPoly(a,xData,x). Evaluates Newtons polynomial p at x. The coefficient vector a can be computed by the function coeffts. a coeffts(xData,yData). Computes…

“机器人迟钝一点,会更有人情味”,迪士尼提出新型人机交互系统

来源:机器人大讲堂导读打篮球时,当球向你飞来,你总会下意识地或者说有意识地伸手去接住球。生活中,有人递给你一个东西时,你也会伸手去接住,礼貌或者仓促地。那么在如今拟人机器人越发“聪明”的时代&#…

黑龙江对口学计算机上机,2009年黑龙江省职高对口升学计算机应用专业技能试卷十.doc...

2009年黑龙江省职高对口升学计算机应用专业技能试卷十2009年黑龙江省职高对口升学计算机应用专业技能试卷十总分题号一二三四五核分人题分(本试卷满分150分,考试时间120分钟)一.填空题:(每空1分,共50分)1、Windows Xp中窗口排列方…

Linux 应用程序 网络通讯函数记录

创建一个套接口&#xff08;&#xff09;。#include <sys/socket.h>int socket( int af, int type, int protocol);af&#xff1a;一个地址描述。目前仅支持AF_INET格式&#xff0c;也就是说ARPA Internet地址格式。type&#xff1a;指定socket类型。新套接口的类型描述类…

台式计算机固定资产属于哪类,电脑属于固定资产的哪一类

台式计算机属于固定资产分类中的电子设备范畴。固定资产是指企业为生产产品、提供劳务、出租或者经营管理而持有的超过12个月并达到一定价值标准的非货币性资产&#xff0c;包括房屋、建筑物、机器、机械、交通工具和其他设备&#xff0c;与生产经营活动有关的器具、工具。固定…

华为十大发明

来源&#xff1a;蓝海长青智库时代的车轮滚滚向前&#xff0c;推动时代前进的离不开那些改变人们生活的发明。就像爱迪生发明电灯&#xff0c;每一个时代都有一些创新的技术足以载入史册。这些技术或许在发明初期还不足以让人感受到它的价值&#xff0c;但是随着时代的进步&…

python利用自动识别写模块_教你用Python 实现自动导入缺失的库

在写 Python 项目的时候&#xff0c;我们可能经常会遇到导入模块失败的错误&#xff1a;ImportError: No module named ‘xxx’ 或者 ModuleNotFoundError: No module named ‘xxx’ 。 导入失败问题&#xff0c;通常分为两种&#xff1a;一种是导入自己写的模块&#xff08;即…

基于类的命令行notebook的实现

在看一本书《PYTHON3 面向对象编程》 内容丰富&#xff0c;作作记录。 notebook.py __author__ chengang882import datetime# Store the next available id for all new note last_id 0class Note(object):"""Represent a note in the notebook. Match agains…

python中用socket检测端口_python基于socket函数实现端口扫描

本文实例为大家分享了python基于socket实现端口扫描的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下自学Python一段时间&#xff0c;写个端口扫描器练练手。有什么不足之处&#xff0c;请见谅这是基于socket函数对端口进行端口扫描所以&#xff0c;首先要导入socket…

php清理html table样式,Parse HTML Table - PHP [closed]

问题Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.Want to improve this question? Update the question so its on-topic for Stack Overflow.Closed 6 years ago.I have an HTML table that I would like to par…

2020年五大云计算预测

来源&#xff1a;信息安全与通信保密杂志社Forrester的新报告发现&#xff0c;超大规模云联盟、云原生创新和新的云安全要求将在2020年重塑云计算行业格局。Forrester近日发布了一份报告&#xff0c;对2020年的云计算行业发布了五大预测。这些预测表明争夺云计算霸主地位的竞争…

ResourceManager里面Trackingui需要手动该ip

C:\Windows\System32\drivers\etc这个路径下配置了ip和主机名&#xff0c;不过是大小写&#xff0c;ping不同&#xff0c;不论ping大小写还是全部小写都不行&#xff0c;我看地址栏是小写所以想着把hosts里CentOSMaster改成centosmaster&#xff0c;然后还是不行&#xff0c;备…

qt中的mysql能存入多少行数据_Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)...

SQLite数据库本质上来讲就是一个磁盘上的文件&#xff0c;所以一切的数据库操作其实都会转化为对文件的操作&#xff0c;而频繁的文件操作将会是一个很好时的过程&#xff0c;会极大地影响数据库存取的速度。例如&#xff1a;向数据库中插入100万条数据&#xff0c;在默认的情况…

计算机英语一级考试试题,全国计算机一级考试试题及答案

单选题1.( )是指连入网络的不同档次、不同型号的微机&#xff0c;它是网络中实际为用户操作的工作平台&#xff0c;它通过插在微机上的网卡和连接电缆与网络服务器相连。 答案:A 难:2A、网络工作站 B、网络服务器 C、传输介质 D、网络操作系统2.通过Internet发送或接收电子邮件…

薛建儒:无人车的场景理解与自主运动

来源&#xff1a;人工智能前沿讲习一报告导读本文为西安交通大学人工智能与机器人研究所薛建儒教授&#xff0c;做的题为无人车场景计算与自主运动的研究进展的报告&#xff0c;主要从无人车概述、场景理解、自主运动、总结与展望四个方面介绍了其团队在无人驾驶领域的探索。在…

(转)HTTP 长连接和短连接

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议&#xff0c;在传输层使用TCP协议&#xff0c;在网络层使用IP协议。IP协议主要解决网络路由和寻址问题&#xff0c;TCP协议主要解决如何在IP层之上可靠的传递数据包&#xff…

ddr4服务器内存频率_金士顿DDR4-3200服务器内存通过完整测试

全面支持第二代AMD EPYC处理器2019年8月13日北京讯&#xff0c;全球存储领袖金士顿今天宣布旗下Server Premier系列DDR4-3200 Registered DIMMs内存将支持第二代AMD EPYC™服务器处理器。最新款金士顿Server Premier内存频率高达3200MT/s&#xff0c;提供8GB、16GB和32GB三种容…

html 链接section,HTML section 标签

HTML 标签是HTML5新增的语义化标签之一。关于语义化标签的概念与作用可以参阅HTML 语义化布局概述一章节。**一.标签作用&#xff1a;**此标签的功能与标签比较类似&#xff0c;两者联系与区别简单总结如下&#xff1a;(1).可以认为是特殊。(2).更加强调独立性&#xff0c;语义…

中美科技成果转化比较分析

来源&#xff1a;创新研究近年来随着国家在不断加大科技投入&#xff0c;以及专利成果数量的快速增长&#xff0c;全社会对科技创新关注程度不断提高&#xff0c;对我国科技成果转化率低的批评不断增加&#xff0c;有文章指出“我国科技成果的转化率仅有10%&#xff0c;比美国8…