![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UGUI详解
文章平均质量分 61
81192_csdn
喜欢创造新世界
展开
-
(十五) TweenRunner
1.前言在研究UGUI源码时会有一些好的想法产生或者借鉴,在这里面最大的一点就是Tween。曾经补间动画一致采用DoTween,但是对与简单使用或者少量使用时引入整个插件又不值得,所以都是自己写一个。曾将看到Tween.js实现后一直想自己实现一个轻量级的,一致没有行动,但是unity的CoroutineTween.cs提供了一个比较好的实现。2.源码using System.Collections;using UnityEngine.Events;namespace UnityEngine.U原创 2022-05-24 12:35:06 · 304 阅读 · 0 评论 -
(十四)InputField逻辑分析
文章目录1.前言2.获取文字3.光标设置3.1 状态机模式3.2 光标渲染3.3 高亮渲染4.总结5.结语1.前言本文来讲一下InputField实现,本文之所以叫逻辑分析是因为跟作者自己和解了,不再去追求一些细节的实现(其实是脑细胞不够理解不了)。2.获取文字文字获取通过TouchScreenKeyboard获取。在激活模块时根据需求(比如是否多行,是否只有数字)打开所有键盘,此步操作主要针对触屏设备(苹果、android或者触屏windows)。然后在LateUpdate通过TouchScree原创 2022-05-24 12:10:17 · 567 阅读 · 0 评论 -
(十三)文本渲染Text
文章目录1.前言2.逻辑梳理3.贴图获取4.获取Mesh5.结语1.前言unity的文本渲染通过Text组件实现,文字的渲染也离不开贴图、mesh以及材质。材质则是根据MaskableGraphic材质,所以了解Text的主线则是了解如何生成贴图和mesh即可。本文不会去讨论文字贴图和mesh产生的技术细节,只讨论如何利用unity现有的组件去获取贴图和mesh。2.逻辑梳理基本逻辑如下:1)当需要更新时(比如更新文字大小时)标记更新材质和mesh2)Canvas处于preRender时通过Fo原创 2022-05-23 18:21:57 · 993 阅读 · 0 评论 -
(十二)交互组件Selectable
文章目录1.前言2.实现3.最后1.前言简单说一下unity的交互组件Selectable,此组件是所有组件交互的基类,即它实现了鼠标hover、点击、离开以及其他事件对应的状态。是button、toggle、slider等的基类,比较简单。2.实现其实现比较简单,即简单继承一些事件接口(如IPointerDownHandler),然后获取事件,根据事件去处理不同的逻辑。而此组件看起来比较复杂(1000+行的代码),是为了处理一些特殊情况,比较复杂的功能是如下两个:1、Transition的选择,原创 2022-05-23 16:12:17 · 869 阅读 · 0 评论 -
(十一)自定义VrInputModule
文章目录1.前言2.Input3.自定义InputModule4.结语1.前言本文基于InputModule的逻辑,根据VR的操作特点,写一个VrInputModule。2.Input虚拟一个Input类,来获取最基本的信息,如下代码所示(示意代码):using UnityEngine;using System.Collections;public class GazeInput ...原创 2020-04-12 10:57:15 · 569 阅读 · 1 评论 -
(十)自定义GraphicRaycaster
文章目录1.前言2.Plane射线检测3.GraphicRaycaster4.结语。。1.前言在之前的文章中曾分析过unity事件系统中的rayCaster,其中GraphicRaycaster中曾分析过,射线在此类中的作用仅仅是为了检测与3D或者2D的碰撞距离,而ui检测时则使用如下代码:RectTransformUtility.RectangleContainsScreenPoint(g...原创 2020-04-11 19:52:46 · 739 阅读 · 0 评论 -
(九)Mask详解
文章目录1.前言2.模板遮罩原理2.1 模板值2.2 模板参数设置2.3 模板参数使用2.3.1 模板测试2.3.2 模板设置2.4 模板测试应用3.Mask逻辑4.结语1.前言本文从逻辑和原理上详细分析Ugui的Mask组件。Mask组件的逻辑没有RectMask2D复杂,但是原理稍微麻烦一点,用得到渲染的模板检测。2.模板遮罩原理2.1 模板值以下图为例,假如均没有开启模板检测,ca...原创 2020-04-11 17:51:49 · 1552 阅读 · 0 评论 -
(八)RectMask2D详解
文章目录1.前言2.详解3.结语1.前言RectMaskD的基本原理就是CanvasRenderer的EnableRectClipping方法,上一节已经做了详细说明。而它的工作流程在(六)和(五)中也做了详细分析。此篇重新梳理一下流程,做更细致的分析。2.详解RectMask2D的基本原理比较建议,复杂点在于其上层逻辑比较复杂,今天就按逻辑流程顺序进行分析。1)启动时通过Clipper...原创 2020-04-11 12:13:33 · 1756 阅读 · 1 评论 -
(七)自定义Graphic
文章目录1.前言2.实现Graphic2.1 设置网格2.1.1 固定网格2.1.2 动态网格2.2 材质2.3 设置Rect剔除2.4 启动位置3.完整代码4.结语1.前言基于CanvasRenderer实现一个自定义(破产版)的graphic。以往自定义ui形式时,可以新建脚本继承Graphic,通过重写虚方法来实现一些特殊功能。此文则从CanvasRenderer的层面,实现一个Grap...原创 2020-04-11 11:06:06 · 670 阅读 · 0 评论 -
(六)Graphic与MaskableGraphic详解
文章目录1.前言2.基本原理2.1 GraphicRegistry2.2 标记Graphic重建2.2 材质Material2.3 重构Rebuild2.3.1几种OnPopulateMesh3.结语1.前言此篇将对UGUI系统中图像显示的核心Graphic类进行详细分析2.基本原理基本流程已经在CanvasUpdate一文中的2.1和2.2节分析过了。即每帧在进行Canvas渲染前通过C...原创 2020-04-06 10:37:08 · 1424 阅读 · 0 评论 -
(五)UGUI CanvasUpdate
文章目录1.前言2.UGUI运作原理图2.1 CanvasUpdateRegistry2.2 Graphic/MaskableGraphic2.3 RectMask2D遮罩3.结语1.前言ugui的图像显示核心是Graphic类,而这一切Graphic又由Canvas相关类进行管理。在ugui系统中Canvas是管理ui元素的生命周期与样式变化,而CanvasRenderer则负责ui的显示,...原创 2020-04-05 22:04:07 · 1148 阅读 · 0 评论 -
(四)UGUI Raycaster
文章目录1.前言2.使用位置3.射线检测系统3.1 基本流程3.2 PhysicRaycaster3.3 GraphicRaycaster3.4 射线检测方法4.结语1.前言此文来分析以下Raycaster。虽然Unity的Raycaster等一些组件跟ui放在一起,但是很多属于事件系统。2.使用位置在事件系统中,Raycaster用来获取获取当前交互位置(如鼠标位置)对应的游戏物体,其使...原创 2020-04-05 12:03:12 · 580 阅读 · 0 评论 -
(三)UGUI ExecuteEvent
文章目录1.前言2.关键方法3.结语1.前言ExecuteEvent是一个非常有用的类,方法都是静态的。在Unity事件系统中负责执行各个事件。2.关键方法1)Execute方法:public static bool Execute(GameObject target, BaseEventData eventData, EventFunction functor) where T : ...原创 2020-04-05 10:51:59 · 280 阅读 · 0 评论 -
(二)UGUI InputModule
文章目录1.前言2.综述2.1 BaseInputModule2.2 PointerInputModule2.2.1 PointerData字典2.2.2 获取Touch事件PointerData2.2.3 获取Mouse事件的数据2.2.4 其他方法2.3 StandaloneInputModule2.3.1 Update/Move/Submit事件2.3.2 常规事件处理3.结语1.前言在...原创 2020-04-04 15:47:21 · 569 阅读 · 0 评论 -
(一)UGUI事件系统_综述
文章目录1.前言2.事件系统简图2.1 基本流程3.事件系统详图3.1 EventSystem简介3.2 EventSystem工作流程3.3 InputModule简介3.4 InputModule事件处理流程3.5 RayCaster模块4.结语1.前言本文针对UGUI事件系统进行总体陈述,可以有一个宏观上的理解。事件系统保罗各种输入、EventSystem以及各种InputModule,...原创 2020-04-04 11:16:32 · 690 阅读 · 0 评论