这是UGUI源码系列的第二篇内容,如果没有任何基础,可以先看看文章 UGUI源码入门。 UI重建(Rebuild) UI重建分为两类,一类是布局重建(Layout Rebuild),另一类是图形重建(Graphic Rebuild)。 布局重建(Layout Rebuild):当UI元素的尺寸、位置、或布局规则发生变化时,会触发布局重建。例如,改变RectTransform的尺寸或位置、...
PerformUpdate源码为: privatevoidPerformUpdate(){UISystemProfilerApi.BeginSample(UISystemProfilerApi.SampleType.Layout);CleanInvalidItems();m_PerformingLayoutUpdate=true;m_LayoutRebuildQueue.Sort(s_SortLayoutFunction);for(inti=0;i<=(int)CanvasUpdate.PostLayout;i++){UnityEngine.Profiling.Profiler.BeginSamp...
本系列文章希望通过阅读UGUI源码的方式,来探究遮罩的实现原理,以及通过Unity不同遮罩之间实现方式的对比,找到每一种遮罩的最佳使用场合。 Unity UGUI主要提供两种遮罩,分别是Mask和Rect Mask 2D。在2D游戏开发中,可能还会用到Sprite Mask,虽然不是本文的重点,但后面也会提到。原本是希望将对各个遮罩的分析与对比整合在...
大型工业跨平台软件C++源码提供,建模,组态!【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步 相关博文: · 浅谈UGUI的渲染机制 · 合批是什么?为什么可以减少Drawcall?有什么合批方法? · Mask实现原理(兼模板测试小结) · Mask裁剪原理...
(注:在最新的2017.4UGUI源码中,TouchInputModule已经被弃用,触摸输入已经被集成到StandaloneInputModule。) void Update() EventSystem会在Update里每帧执行TickModules方法,调用每一个InputModule。 遍历m_SystemInputModules,判断这些module是否支持当前平台IsModuleSupported(),并且是否可激活ShouldActivateModule()。
UGUI核心源码剖析 我们依然从文件夹结构下手,从最容易看懂的地方下手,寻找某块之间的划分,我们先来看下核心部分的文件结构,如下图: 从图中可以看出,以文件夹为单位,拆分模块有,Culling(裁剪), Layout(布局), MaterialModifiers(材质球修改器), SpecializedCollections(收集), Utility(实用工具), VertexModifiers(顶点...
UGUI 输入事件的核心要点如下:EventData:作用:事件传递的核心载体。类型:BaseEventData:封装EventSystem的关键信息,如currentInputModule和selectObject,是事件传递的基础。AxisEventData:承载轴向事件的数据,包含moveDirection和moveVector。PointerEventData:记录触摸和点击事件,包含位置、按压时间和拖动距离等...
源码中查看影响重建因素 触发SetLayoutDirty Graphic: protected override void OnRectTransformDimensionsChange():当UI的RectTransform更改时的回调,只要继承UIBehavior即可获取回调 Image: protected override void OnCanvasHierarchyChanged():父画布的状态改变 Text: ...
UGUI源码剖析 UGUI的源码是Unity3D官方公开的,这里我们来剖析的是 UGUI 在 Unity2017 中的公开源码。 上图为 UGUI 内核源码的文件夹结构图。它把UGUI分成了三块,输入事件,动画,核心渲染。 其中动画部分相对比较简单,用了tween补间动画的形式,对颜色,位置,大小做了渐进的操作。tween的原理是在启动一个协程,在协程...