Unity UGUI原理剖析

UI最重要的两部分

  1. UI是如何渲染出来的
  2. 点击事件如何触发
  3. 何时发生UI重绘

1:UI如何渲染出来的

UI渲染一定是有顶点的,没有顶点就没法确定贴图的采样,UGUI的顶点在一张Mesh上创建,经过渲染管线UI就渲染到屏幕上了,UI的渲染和3D模型的渲染本质上是没有区别的。

2:点击事件如何触发

UGUI里有个很重要的组件,EventSystem,还有一个非常重要的函数RaycastAll(),主要是获取目标。这个方法会首先获取所有的BaseRaycast对象,调用其Raycast方法,然后对最后得到的结果进行排序(大部分情况下按深度进行排序,也有一些情况下会使用距离、排序顺序)

所以结论就是UGUI的事件触发是通过射线实现的。

3:何时发生UI重绘

主动重绘

Rebuild方法是暴露出来的,但重绘的前提是有顶点数据或者材质球发生了变化才会发生重绘。如果你不想下一帧重绘,则可以主动调用,我目前没见过有主动调用的需求。

被动Tick重绘

被动重绘就很好理解了,因为UGUI的底层是每一帧都会检查是否有脏数据,如果有脏数据则会重新组装网格,并进入渲染流程。

相关推荐
阿蔹6 分钟前
UI测试自动化-Web-Python-Selenium-2-元素操作、浏览器操作
前端·python·selenium·ui·自动化
心前阳光24 分钟前
Unity通过ScriptableObject学习访问者模式
学习·unity·访问者模式
wenzhangli71 小时前
Ooder框架8步编码流程实战 - DSM组件UI统计模块深度解析
windows·ui
fcm191 小时前
unity之重新导入TMP
unity
心疼你的一切1 小时前
【技术创作的璀璨盛宴——2025年CSDN博客之星总评选深度总结】
microsoft·unity·游戏引擎·游戏程序·csdn·博客之星
MoonBit月兔2 小时前
用 MoonBit 打造的 Luna UI:日本开发者 mizchi 的 Web Components 实践
前端·数据库·mysql·ui·缓存·wasm·moonbit
心前阳光2 小时前
Unity批量实例化UI后设置UI位置失效
unity
心前阳光2 小时前
Unity的VideoPlayer准备完成回调注意
unity·游戏引擎
BoBoZz193 小时前
ColorEdges 动态有向图的动态渲染
python·vtk·图形渲染·图形处理
BoBoZz194 小时前
AmbientSpheres 调整材质的环境光系数来控制3D物体的着色效果
python·vtk·图形渲染·图形处理