unity UGUI部分源码简析
2017-12-26 12:00
218 查看
事件系统:
StandaloneInputModule:继承自PointerInputModule,实现了一个Process虚方法,用于处理键盘鼠标的输入事件;
TouchInputModule:继承自PointerInputModule,实现了一个Process虚方法,用于处理触摸屏的输入事件;
Eventsystem:单例,维护了一个BaseInputModule的list,每帧遍历,用于更新输入模块,并执行当前模块的Process;
ExecuteEvents:静态,有一个Execute泛型方法,在上述Process中执行,使当前的组件响应输入事件;
渲染系统:
CanvasUpdateRegistry:
画布更新注册处,单例,继承ICanvasElement接口的组件均可以注册到它,在Canvas即将渲染时调用Rebuild方法;
主要在Graphic中调用,包括一个布局重建队列(m_LayoutRebuildQueue),一个图像重建队列(m_GraphicRebuildQueue);
Graphic:
抽象类,继承自ICanvasElement,重写Rebuild,用于更新网格(UpdateGeometry)和材质(UpdateMaterial),UpdateGeometry,UpdateMaterial均为虚方法,一般的组件如image,text均继承自graphic,并重写UpdateGeometry,UpdateMaterial;
graphic还继承UIBehaviour,在发生OnRectTransformDimensionsChange等变化时实现了对布局(SetLayoutDirty),网格(SetVerticesDirty),材质(SetMaterialDirty)的修改;其中SetVerticesDirty,SetMaterialDirty直接注册CanvasUpdateRegistry的m_GraphicRebuildQueue,
SetLayoutDirty通过LayoutRebuilder注册CanvasUpdateRegistry的m_LayoutRebuildQueue;
LayoutRebuilder:
主要在Graphic中调用,用于搜索影响Graphic组件的布局控件,并根据布局控件调整组件大小,继承ICanvasElement,重写Rebuild方法,在CanvasUpdateRegistry调用;
MarkLayoutForRebuild:
开放接口,在Graphic的SetLayoutDirty中调用,用于搜索布局控件(继承ILayoutGroup接口,GripLayoutGroup等),通过该控件初始化一个LayoutRebuilder,并注册到CanvasUpdateRegistry中);
StandaloneInputModule:继承自PointerInputModule,实现了一个Process虚方法,用于处理键盘鼠标的输入事件;
TouchInputModule:继承自PointerInputModule,实现了一个Process虚方法,用于处理触摸屏的输入事件;
Eventsystem:单例,维护了一个BaseInputModule的list,每帧遍历,用于更新输入模块,并执行当前模块的Process;
ExecuteEvents:静态,有一个Execute泛型方法,在上述Process中执行,使当前的组件响应输入事件;
渲染系统:
CanvasUpdateRegistry:
画布更新注册处,单例,继承ICanvasElement接口的组件均可以注册到它,在Canvas即将渲染时调用Rebuild方法;
主要在Graphic中调用,包括一个布局重建队列(m_LayoutRebuildQueue),一个图像重建队列(m_GraphicRebuildQueue);
Graphic:
抽象类,继承自ICanvasElement,重写Rebuild,用于更新网格(UpdateGeometry)和材质(UpdateMaterial),UpdateGeometry,UpdateMaterial均为虚方法,一般的组件如image,text均继承自graphic,并重写UpdateGeometry,UpdateMaterial;
graphic还继承UIBehaviour,在发生OnRectTransformDimensionsChange等变化时实现了对布局(SetLayoutDirty),网格(SetVerticesDirty),材质(SetMaterialDirty)的修改;其中SetVerticesDirty,SetMaterialDirty直接注册CanvasUpdateRegistry的m_GraphicRebuildQueue,
SetLayoutDirty通过LayoutRebuilder注册CanvasUpdateRegistry的m_LayoutRebuildQueue;
LayoutRebuilder:
主要在Graphic中调用,用于搜索影响Graphic组件的布局控件,并根据布局控件调整组件大小,继承ICanvasElement,重写Rebuild方法,在CanvasUpdateRegistry调用;
MarkLayoutForRebuild:
开放接口,在Graphic的SetLayoutDirty中调用,用于搜索布局控件(继承ILayoutGroup接口,GripLayoutGroup等),通过该控件初始化一个LayoutRebuilder,并注册到CanvasUpdateRegistry中);
相关文章推荐
- lucene搜索源码过程简析
- android 部分源码下载地址
- alibaba fastjson(json序列化器)序列化部分源码解析-1-总体分析
- Unity3D 大型游戏 最后一站 源码 部分重点匹配战斗(三)(12)
- 发布仿动软dotnet代码生成器源码(部分)
- Unity3D 大型游戏 最后一站 源码 部分重点 GameView-BaseWindow(16)
- Latke源码解析(二)IOC部分
- EasyJWeb-0.1.0部分源码分析
- 原创 c# 封装的带CheckBox的DataGridViewColumnHeaderCell 源码部分 实现DataGridView列头带CheckBox控件实现全选功能,支持列头带标题
- MyEclipse中调试struts2源码的步骤以及部分问题的解决方法
- vector容器部分源码实现
- SpringMVC源码情操陶冶-HandlerAdapter适配器简析
- phpcmsv9启动部分源码解析
- 从源码角度简析 LinkedList 和 ArrayList
- fastjson 序列化部分源码解析②
- EntityFrameWork实现部分字段获取和修改(含源码)
- 《java.util.concurrent 包源码阅读》12 线程池系列之ThreadPoolExecutor 第二部分
- Unity3D 大型游戏 最后一站 源码 部分重点ResourceManager(2)
- 86-浏览器缓存中的部分变量简析
- OA学习笔记-010-Struts部分源码分析、Intercepter、ModelDriver、OGNL、EL