huang11055
这个作者很懒,什么都没留下…
展开
-
【UGUI源码解析】18、Scrollbar
一、简介Scrollbar继承自Selectable类,以及IBeginDragHandler, IDragHandler, IInitializePotentialDragHandler, ICanvasElementt接口。是一种标准的滚动条,带有大小可变的手柄,可以在0和1之间拖动。滑块组件是一个可选择的控件,用于控制跟随当前值的控制柄,并根据“大小”属性调整大小。控制柄的定位由滚动条驱动。手柄可以是滚动条游戏对象的直接子对象,或者,可以将转换放置在中间以进行额外的控制。当s...原创 2021-02-06 10:58:37 · 219 阅读 · 0 评论 -
【UGUI源码解析】17、ToggleGroup
一、简介ToggleGroup继承UIBehaviour,表示一组Toggle的切换。一组toggle当前只能由唯一个toggle对象被选中。维护了一个ToggleList,用于保存注册在该ToggleGroup的所有Toggle。二、功能讲解1、Toggle在OnEnable的时候注册到group,OnDisable的时候移出group,另外通过为group属性赋值也可以让Toggle注册到指定的ToggleGroup(一般是编辑器帮我们设置)2、NotifyToggleOn这个方法是将除原创 2021-02-06 10:20:29 · 449 阅读 · 0 评论 -
【UGUI源码解析】16、Toggle
一、简介Toggle继承于Selectable, IPointerClickHandler, ISubmitHandler, ICanvasElement。主要用于供下拉框选择。二、功能讲解1、Toggle有个重要的bool变量m_IsOn(对应成员属性IsOn),表示是否被勾选。2、与Button类似,Toggle也有一个onValueChanged事件用于外部监听m_IsOn是否改变。3、Set方法用于设置m_IsOn的值,并发送事件onValueChanged.Invoke(m_.原创 2021-02-06 10:20:04 · 374 阅读 · 0 评论 -
【UGUI源码解析】15、Shadow与Outline
一、简介Shadow组件是通过IVertexModifier给graphic(文字或者和图片)的对象增加outline效果,实现的细节是通过给文字或者图片 mesh添加顶点来实现。而Outline是在对象四角上各添加了一个Shadow。由此我们可以得知,Outline的(额外)消耗是Shadow的四倍,所以还是需要谨慎使用。继承BaseMeshEffect基类二、功能讲解1、BaseMeshEffect1、是一个抽象类,继承了IMeshModifier接口,接口允许在传递给CanvasRen原创 2021-02-06 10:19:36 · 1041 阅读 · 0 评论 -
【UGUI源码解析】14、Text
一、简介Text组件是ugui中核心的组件,使用该组件可以实现字符串文字的输出控制。继承了MaskableGraphic, ILayoutElement。主要的功能都是在TextGenerator实现。二、功能讲解1、OnPopulateMesh ()该类继承MaskableGraphic,后者继承于Graphic类,该方法是重写Graphic的OnPopulateMesh ,当Graphic执行Rebuild的时候执行。1、根据用户的设置生成了一个TextGenerationSetti原创 2021-02-06 10:19:15 · 347 阅读 · 0 评论 -
【UGUI源码解析】13、Image
一、简介Image是比RawImage功能更加丰富的图片类。继承MaskableGraphic, ISerializationCallbackReceiver, ILayoutElement, ICanvasRaycastFilter,提供四种图片类型--Simple,Sliced,Tiled和Filled。继承了ILayoutElement,是一个布局元素,可以被各种布局组(ILayoutGroup)所包含,将它和其他布局元素进行布局(后续博客讲解布局)。二、功能讲解1、OnPopulat原创 2021-02-05 19:45:12 · 204 阅读 · 0 评论 -
【UGUI源码解析】12、RawImage
一、简介如果你没有或不想创建一个地图集,你可以简单地使用这个脚本来绘制一个纹理。请记住,这将创建一个额外的绘制调用,每个RawImage都存在,因此最好只用于背景或临时可见图形。【脚本注释】继承MaskableGraphic。是未经处理的图片,每个RawImage都会创建一个DrawCall。二、功能说明1、SetNativeSize重写MaskableGraphic的SetNativeSize方法,用以设置图片的大小,设置RectTransform的sizeDelta等于纹理Textu原创 2021-02-05 18:52:27 · 264 阅读 · 0 评论 -
【UGUI源码解析】11、Mask
一、简介Mask继承了UIBehaviour, ICanvasRaycastFilter,IMaterialModifier,实现对图片的裁剪功能二、功能OnEnable()1、如果含有Graphic组件,设置graphic.canvasRenderer.hasPopInstruction为true,调用graphic.SetMaterialDirty()方法。2、调用MaskUtilities.NotifyStencilStateChanged,重新计算遮罩。OnDisable()原创 2021-02-05 17:35:45 · 303 阅读 · 0 评论 -
【UGUI源码解析】10、RectMask2D
一、简介RectMask2D继承了UIBehaviour, IClipper, ICanvasRaycastFilter。二维矩形遮罩,允许对遮罩外的区域进行剪裁/遮罩二、功能1、OnEnable()1、m_ShouldRecalculateClipRects设置为true,该变量表示当前是否需要对m_Clippers重新获取设置,2、ClipperRegistry注册脚本对象,ClipperRegistry会在EventSystetem的PerformUpdate()函数中执行,也就是原创 2021-02-05 16:46:46 · 259 阅读 · 0 评论 -
【UGUI源码解析】9、MaskGraphic
一、简介MaskableGraphic是一个抽象类,继承了Graphic, IClippable, IMaskable, IMaterialModifier接口,派生了RawImage,Image和Text二、功能1、OnEnable() protected override void OnEnable() { base.OnEnable(); m_ShouldRecalculateStencil = tru.原创 2021-02-05 16:03:33 · 230 阅读 · 0 评论 -
【UGUI源码解析】8、Graphic
一、简介Graphic主要是用来控制图片的显示,设置mesh的顶点和uv数据,提供给VertexHelper和CanvasRenderer进行mesh绘制。所以有时候制作一些角色头顶的血条使用动态创建mesh的方法进行绘制。Graphic是一个抽象类,是MaskableGraphic(可遮罩图像)的基类,而MaskableGraphic是RawImage、Image和Text的基类。二、功能1、添加的特性 [DisallowMultipleComponent]//一个对象只能挂载原创 2021-02-05 14:23:59 · 372 阅读 · 0 评论 -
【UGUI源码解析】7、Button
一、简介Button继承自Selectable,IPointerClickHandler、ISubmitHandler。添加了一个UnityEvent类型的事件onClick。二、功能1、onClick事件可以添加用户自定义的监听,具体方法可以通过编辑器添加也可以通过onClick.AddListener添加。2、OnPointerClick会调用Press方法来回调onClick。3、OnSubmit也会调用Press方法,并切换状态为Pressed,并开启协程调用OnFinishSu原创 2021-02-05 13:51:33 · 269 阅读 · 0 评论 -
【UGUI源码解析】6、Selectable
一、简介Selectable是所有交互相关组件的基类,在UGUI的组件中是比较重要的一个类,可以说把这个类搞清楚,那基本其他类都问题不是太大。二、功能1、添加的特性 [AddComponentMenu ("UI/Selectable", 70)] [ExecuteAlways]运行在编辑器模式下 [SelectionBase]标记此对象为基本选择对象 [DisallowMultipleComponent]不允许一个GameObject上出现同种组件2、Selec...原创 2021-02-05 13:43:20 · 556 阅读 · 0 评论 -
【UGUI源码解析】5、 Raycaster
一、全局窥探通过全局搜索可以发现跟Raycaster相关的类主要是,BaseRaycaster,PhysicsRaycaster,GraphicRaycaster,Physics2DRaycaster,RaycastResult,RaycasterManager。接下来,我们从几个方面入手来分析射线相关的内容。1、射线相关类的功能2、射线类的使用二、射线相关类功能根据名字,我们可以猜测到BaseRaycaster是所有射线类处理的基类,所以我们先从这个类开始分析。1、BaseRayc原创 2021-02-05 13:12:59 · 388 阅读 · 0 评论 -
【UGUI源码解析】4、CanvasUpdateSystem
一、CanvasUpdateRegistry实现 的功能主要的实现功能是对所有的graphic对象和layout对象进行注册管理【组件需要是ICanvasElement类型】,根据canvas的事件,调用ui对象的Rebuild函数进行重建。二、源码分析1、 private static CanvasUpdateRegistry s_Instance;表示当前的CanvasUpdateRegistry是一个单例。2、//布局刷新队列private readonly IndexedSet&.原创 2021-02-04 23:57:24 · 288 阅读 · 1 评论 -
【UGUI源码解析】3、输入模块InputMoudle
一、输入模块组成BaseInputModule、PointerInputModule、StandaloneInputModule、TouchInputModule组成输入模块二、触发流程以TouchInputMoudle输入模块为例子1、通过OnEnable()函数获取当前对象挂载的EventSystem组件,获取事件系统管理对象eventSystem。【这就要求EventSystem组件和输入模块的组件是挂在同一个对象】2、通过EventSystem的Update()函数触发Touch原创 2021-02-04 21:30:25 · 336 阅读 · 0 评论 -
【UGUI源码解析】2、事件委托
一、功能说明1、包含BaseEventData,有不同类型的事件接口类【都在EventInterfaces】和对应的事件点击数据结构,2、对外调用的统一执行接口,获取当前收到事件的对象,判断当前是否对象是否可以收到执行事件二、重要代码说明1、定义代理函数,使用相同的事件数据类型进行数据封装 //事件代理函数,以及对应的数据, //代理函数会根据指定的T1类型去查找对应的执行函数, //由于参数类型不同,所以函数名可以都取同一个 publi.原创 2021-02-04 19:47:48 · 154 阅读 · 0 评论 -
【UGUI源码解析】1、EventSystem系统
一、功能说明1、创建ui对象的时候,引擎会自动生成Canvas和EvenSystem对象。EventSystem类是挂在在EventSystem对象的组件2、EventSystem主要是用来执行和处理场景中的事件,比如点击交互,射线和事件系统的发送3、一个场景只能有一个EventSystem对象二、类关系继承:UIBehaviour,管理对象的生命周期函数基类包含【重要的一些功能类】:BaseInputModule,BaseEventData,PointerEventData,Ray原创 2021-02-04 18:34:14 · 657 阅读 · 1 评论