热血枫叶
开朗、活泼
展开
-
LayoutSystem布局系统
简介: LayoutSystem,是UGUI中由CanvasUpdateSystem发起(m_LayoutRebuildQueue中大部分都是LayoutRebuilder)的关于布局排列的处理系统。类图:布局过程核心代码讲解:LayoutRebuilder脏标记:UGUI组件(如Graphic、ScrollRect…)在需要布局处理时会通过标记的方式将自身RectTransform封装成一个LayoutRebuilder对象添加进Canv...原创 2024-06-22 21:00:43 · 183 阅读 · 0 评论 -
Button
Button Click 触发过程流程1. EventSystem的Updateprotected virtual void Update(){ if (current != this) return; TickModules(); //遍历并刷新所有的InputModules,更新Modules中的m_LastMousePosition、m_MousePosition //..略..// //执行当前InputModule的Process,由原创 2022-04-12 10:15:23 · 291 阅读 · 0 评论 -
Selectable
简介: Selectable是Button、InputField、Toggle、ScrollBar、Slider、Dropdown的基类。类图(部分):操作流程:SelectHandler Selectable的基础事件:由输入检测(InputModule)与输入响应模块(Selectable等组件)调用用来更换EventSystem当前对象时被触发的事件类型。部分核心代码:EventSystem.cs//输入检测与输入响应的模块调用,变化当前选中的Game...原创 2022-04-12 10:12:54 · 616 阅读 · 0 评论 -
事件系统-输入模块
管理所有的输入检测模块(InputModule)并帧调用Module的执行(Process)调动射线捕捉模块(Raycasters),为InputModule提供结果(具体的触点所穿透的对象信息)InputModule 管理更新EventData 判断当前的操作事件,并通知具体的EventSystemHandler 进行逻辑处理。事件监听及触发分四个部分:事件数据、输入模块、射线碰撞检测、事件调度。事件数据:BaseEventData:是事件数据类的父类,其中包括Eve...原创 2022-04-12 10:10:50 · 301 阅读 · 0 评论 -
Text实现原理
简介: UGUI的Text就是位图字体,先通过TTF字体将字体形状生成在位图中,接着就是将正确的UV设置给字体的Mesh。不同于Image不仅要处理网格还要处理材质和纹理,Text并不需要对材质纹理做更加具体的处理,因为Text的材质默认来自于它的字体本身或是它身上所被设置的材质。位图字体: 位图字体是一种计算机字体,它使用一个称为像素的图片元素来构建一个称为glyphs的符号,组成一个总的位图字体。当一个紧凑的、快速加载的字体必不可少时,就使用这种字体。位图字体有时被称为光栅字体,同...原创 2022-04-12 10:04:56 · 411 阅读 · 0 评论 -
Image
简介 Image继承了MaskableGraphic, ISerializationCallbackReceiver, ILayoutElement, ICanvasRaycastFilter,提供了四种ImageType:Simple(普通)、Sliced(切割)、Tiled(平铺)、Filled(填充)。继承了ILayoutElement是一个布局元素,可以被各种布局组(ILayoutGroup)所包含,将它和其他布局元素进行布局。更新流程图ImageType方式:Sim...原创 2022-04-12 09:54:44 · 431 阅读 · 0 评论 -
MaskableGraphic
简介 MaskableGraphic在 Graphic的基础上实现了裁剪与遮罩功能。 这主要是由 IClippable、IMaskable 两个接口来实现的。在Graphic更新材质的流程中有提及Mask。Graphic 可以理解成由骨头和皮肤所组成,骨头即顶点信息所构建的网格(Mesh),皮肤则是依附于Mesh的材质和纹理。实际上Mesh是不可见的,对于可见物的处理(例如Mask遮罩剔除)都是针对于Material。理解清楚IClippable与IMas...原创 2022-04-12 09:47:26 · 678 阅读 · 0 评论 -
Graphic
简介: Graphic 作为图像组件的基类,主要实现了网格与图像的生成及刷新方法。在生命周期Enable阶段、Editor模式下的OnValidate中、层级/颜色/材质改变时都会进行相应的刷新(重建)。重建过程主要通过 CanvasUpdateSystem 最终被Canvas所重新渲染。图形绘制过程注册Canvas.willRenderCanvases事件,UI发生变动,该事件触发 从渲染队列中获取元素,分别调用ReBuild方法 Rebuild方法中完成网格、材质等更新 u..原创 2022-04-12 09:39:44 · 260 阅读 · 0 评论 -
CanvasUpdateSystem 画布刷新系统
制作UI过程,添加Canvas组件将会打断和之前元素DrawCall的合并,每个Canvas都会开始一个全新的DrawCall,当Canvas需要重绘的时候会调用SendWillRenderCanvases()方法。Canvas.cs(部分源码)//部分源码public sealed class Canvas : Behaviour{ public delegate void WillRenderCanvases(); //公有事件,在CanvasUp...原创 2022-04-12 09:32:33 · 1905 阅读 · 0 评论 -
源码目录结构:
类图:原创 2022-04-12 09:27:18 · 264 阅读 · 0 评论 -
UGUI原理简述
绘制原理核心概念:Mesh、Vertex、Triangle、UV说明:Mesh:网格,决定物体的形状 Vertex :顶点,组成Mesh的元素 Triangle :三角形,决定顶点顺序 UV:纹理贴图坐标下面使用例子依次介绍绘制原理,编写脚本:public class CreateImage : MonoBehaviour{ private MeshFilter meshFilter; private MeshRenderer re...原创 2022-04-12 09:25:41 · 1354 阅读 · 0 评论