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

相关推荐
YF云飞6 小时前
车机两分屏运行Unity制作的效果
unity·游戏引擎·个人开发·车机
枯萎穿心攻击6 小时前
Unity VS UE 性能工具与内存管理
开发语言·游戏·unity·ue5·游戏引擎·虚幻·虚幻引擎
淡海水12 小时前
【URP】Unity 插入自定义RenderPass
unity·游戏引擎·渲染·shader·renderpass
霜绛15 小时前
Unity笔记(六)——Mathf、三角函数、坐标系、向量
笔记·学习·unity·游戏引擎
SmalBox15 小时前
【渲染流水线】[逐片元阶段]-[混合Blend]以UnityURP为例
unity·渲染
DanmF--16 小时前
Unity中的特殊文件夹
unity·c#·游戏引擎
码海扬帆:前端探索之旅16 小时前
小程序开发指南(四)(UI 框架整合)
ui·微信小程序·小程序
chxii18 小时前
6.4 Element UI 中的 <el-table> 表格组件
vue.js·ui·elementui
野区捕龙为宠18 小时前
Unity Netcode for GameObjects(多人联机小Demo)
java·unity·游戏引擎
郝学胜-神的一滴1 天前
Horse3D游戏引擎研发笔记(七):在QtOpenGL环境下,使用改进的Uniform变量管理方式绘制多彩四边形
c++·3d·unity·游戏引擎·图形渲染·虚幻·unreal engine