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的底层是每一帧都会检查是否有脏数据,如果有脏数据则会重新组装网格,并进入渲染流程。

相关推荐
明洞日记13 小时前
【VTK手册017】 深入详解 vtkImageMathematics:医学图像的基本算术运算
c++·图像处理·算法·vtk·图形渲染
tealcwu14 小时前
【Unity技巧】实现在Play时自动保存当前场景
java·unity·游戏引擎
赵财猫._.14 小时前
【Flutter x 鸿蒙】第三篇:鸿蒙特色UI组件与Flutter的融合使用
flutter·ui·harmonyos
CodeCraft Studio14 小时前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建漏斗图
ui·c#·excel·aspose·excel开发·excel漏斗图·漏斗图
tealcwu14 小时前
【Unity基础】实现Scroll View跟随动态内容滚动
java·unity·游戏引擎
BoBoZz1915 小时前
QuadraticHexahedronDemo 非线性单元的展示与窗口交互
python·vtk·图形渲染·图形处理
seven_76782309815 小时前
MateChat自然语言生成UI(NLG-UI):从描述到可交互界面的自动生成
ui·交互·devui·matechat
野奔在山外的猫15 小时前
【文档】VSCode 配置 Unity 环境流程
unity
crary,记忆15 小时前
如何理解 React的UI渲染
前端·react.js·ui·前端框架
xun_xin66616 小时前
QWidget for C++:ui资源使用
ui