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

相关推荐
BoBoZz1911 小时前
MultiBlockDataSet 复合感知与非复合感知
python·vtk·图形渲染·图形处理
鼎道开发者联盟11 小时前
构建活的界面:AIGUI底板的动态布局
人工智能·ui·ai·aigc·gui
Lan.W12 小时前
element UI + vue2 + html实现堆叠条形图 - 横向分段器
前端·ui·html
尤老师FPGA16 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十二讲)
android·java·ui
阿蔹16 小时前
UI测试自动化--Web--Python_Selenium-元素定位
前端·ui·自动化
老朱佩琪!16 小时前
Unity备忘录模式
java·unity·备忘录模式
IT古董17 小时前
【前端】Headless UI 深度实战:构建可访问、可定制的现代前端组件
前端·ui
一帘多啦A梦17 小时前
解决unity2022.3.x版本项目使用vs无法生成解决方案的问题
unity·vs
hpz122318 小时前
对Element UI 组件的二次封装
javascript·vue.js·ui
weixin_4242946719 小时前
Unity LocalPosition 和 Position 的区别?还有其他的Position 没?
unity·游戏引擎