04 2020 档案
摘要:1.前言 本文基于InputModule的逻辑,根据VR的操作特点,写一个VrInputModule。 2.Input 虚拟一个Input类,来获取最基本的信息,如下代码所示(示意代码): using UnityEngine; using System.Collections; public cla
阅读全文
摘要:1.前言 在之前的文章中曾分析过unity事件系统中的rayCaster,其中GraphicRaycaster中曾分析过,射线在此类中的作用仅仅是为了检测与3D或者2D的碰撞距离,而ui检测时则使用如下代码: RectTransformUtility.RectangleContainsScreenP
阅读全文
摘要:1.前言 本文从逻辑和原理上详细分析Ugui的Mask组件。Mask组件的逻辑没有RectMask2D复杂,但是原理稍微麻烦一点,用得到渲染的模板检测。 2.模板遮罩原理 2.1 模板值 以下图为例,假如均没有开启模板检测,canvas上只有一个RawImage组件,那么整个背景模板值为0。如果图中
阅读全文
摘要:1.前言 RectMaskD的基本原理就是CanvasRenderer的EnableRectClipping方法,上一节已经做了详细说明。而它的工作流程在(六)和(五)中也做了详细分析。此篇重新梳理一下流程,做更细致的分析。 2.详解 RectMask2D的基本原理比较建议,复杂点在于其上层逻辑比较
阅读全文
摘要:1.前言 基于CanvasRenderer实现一个自定义(破产版)的graphic。以往自定义ui形式时,可以新建脚本继承Graphic,通过重写虚方法来实现一些特殊功能。此文则从CanvasRenderer的层面,实现一个Graphic。实现时采用的方法则是SetMesh、SetMaterial以
阅读全文
摘要:1.前言 此篇将对UGUI系统中图像显示的核心Graphic类进行详细分析 2.重点方法分析 基本流程已经在CanvasUpdate一文中的2.1和2.2节分析过了。即每帧在进行Canvas渲染前通过CanvasRenderer更新mesh和材质等信息,渲染时根据这些信息进行相应渲染。所以UI渲染的
阅读全文
摘要:1.前言 ugui的图像显示核心是Graphic类,而这一切Graphic又由Canvas相关类进行管理。在ugui系统中Canvas是管理ui元素的生命周期与样式变化,而CanvasRenderer则负责ui的显示,包括网格、材质以及rect裁剪等。由于Canvas与CanvasRenderer真
阅读全文
摘要:1.前言 此文来分析以下Raycaster。虽然Unity的Raycaster等一些组件跟ui放在一起,但是很多属于事件系统。 2.使用位置 在事件系统中,Raycaster用来获取获取当前交互位置(如鼠标位置)对应的游戏物体,其使用位置在EventSystem中的RaycastAll方法。而Ray
阅读全文
摘要:1.前言 ExecuteEvent是一个非常有用的类,方法都是静态的。在Unity事件系统中负责执行各个事件。 2.关键方法 1)Execute 方法: public static bool Execute(GameObject target, BaseEventData eventData, Ev
阅读全文
摘要:1.前言 在上一篇中梳理了一下整个事件系统的流程,包括Workflow,此文则详细讲解一下InputModule本身,并对一些方法做一下解释。 2.综述 InputModule的结构如下所示: BaseInputModule为原始基类,只包含最基本的功能。PointerInputModule主要功能
阅读全文
摘要:1.前言 本文针对UGUI事件系统进行总体陈述,可以有一个宏观上的理解。事件系统保罗各种输入、EventSystem以及各种InputModule,其实不只是UGUI的事件系统,是整个Unity的事件系统。本文只是综述,只涉及各个模块之间的关系与各个模块的功能,每个模块的具体分析在后续详解,源码链接
阅读全文
摘要:1.前言 CommandBuffer为渲染命令缓冲区,我们将一些列渲染指令添加到CommandBuffer中,在需要执行时通过Camera或者Graphics类进行执行,进而实现对渲染流程的控制。同时可以实时生成我们需要的临时效果。本文完整代码在最后。 2.基本方法 目前只介绍CommandBuff
阅读全文