一种在UGUI中嵌入特效的方法及计算机可读存储介质技术

技术编号:19860501 阅读:20 留言:0更新日期:2018-12-22 12:22
一种在UGUI中嵌入特效的方法,包括以下步骤:缓存具有需要渲染网格的渲染组件;通过渲染组件获取网格顶点数据,结合所附属的UI节点的空间信息对顶点进行矩阵变换,将网格顶点从局部坐标系转换到UI节点所在坐标系;从渲染组件中获取渲染所需的材质球,并赋值给UIGraphic,将转换后的顶点信息以及顶点属性赋值给UIGraphic的顶点,并进行处理,使其能成为UI的一个元素;在UI中对所有处理后的顶点数据进行坐标系转换并合成为一个网格;用曲线控制改变渲染组件上的材质球属性以及UI节点的空间信息。本发明专利技术通过将多个界面特效改成UGUI的渲染方式,解决了在UI中嵌入特效导致批次过高的问题,以及增加了在制作UI界面特效时的易用性。

【技术实现步骤摘要】
一种在UGUI中嵌入特效的方法及计算机可读存储介质
本专利技术涉及特效嵌入领域,特别是一种在UGUI中嵌入特效的方法。
技术介绍
目前市面上使用Unity引擎制作的游戏在制作UI界面时大多数会使用NGUI(插件)或者Unity内置的UGUI系统两种。但是要将粒子特效或者平面特效放入UI中就会出现层级显示问题。现在主流的做法是修改特效的渲染层级(Renderer.sortingOrder)实现层级自适应问题,那势必要在运行时去修改特效的渲染层级,效率不高并且它必须依托于Camera,但是Unity5.X的UGUI系统提供了一种无需Camera的高效显示方法,那么现在的做法就无法将特效显示于界面上。图2示出了现有技术的嵌入特效的示意图,该方法将特效插入到UI中间,从图2中,可以看出界面UI的排序会从原来的一个UI变成UI->Effect->Effect->...->UI,这样将无法对UI进行合并批次(DrwCall)操作,添加特效后,会从原来的1个UI层扩大至2+N个层,N的大小由特效自身的Mesh个数决定。因此,现有技术中在UI中嵌入特效的方法存在着批次过高以及操作不方便的问题。
技术实现思路
为了解决现有技术存在的不足,本专利技术的目的在于提供一种在UGUI中嵌入特效的方法。本专利技术通过将多个界面特效改成UGUI的渲染方式,解决了在UI中嵌入特效导致批次过高的问题,以及增加了在制作UI界面特效时的易用性。为实现上述目的,本专利技术提出了在UGUI中嵌入特效的方法,包括以下步骤:1)缓存具有需要渲染网格的渲染组件;2)通过渲染组件获取网格顶点数据,结合所附属的UI节点的空间信息对顶点进行矩阵变换,将网格顶点从局部坐标系转换到UI节点所在坐标系;3)从渲染组件中获取渲染所需的材质球,并赋值给UIGraphic,并维持其引用关系;将步骤2)中转换后的顶点信息以及顶点属性赋值给UIGraphic的顶点,并进行处理,使其能成为UI的一个元素;4)在UI中对所有处理后的顶点数据进行坐标系转换并合成为一个网格;5)用曲线控制改变渲染组件上的材质球属性以及UI节点的空间信息,以产生特效动画序列。进一步地,步骤1)还包括,通过禁用网格渲染组件以剔除不需要的渲染内容。进一步地,在步骤2)中,UI节点的空间信息包括位置、旋转和/或缩放信息。更进一步地,在步骤4)中,根据各网格的前后关系和材质球的异同进行批次合并,以进行坐标系转换并合成为一个网格。为了达到上述目的,本专利技术还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述的在UGUI中嵌入特效的方法的步骤。本专利技术提供的在UGUI中嵌入特效的方法,具有如下有益效果:本专利技术嵌入特效的方法会对不同的特效层进行批次合并,进而减少了特效的批次;并且本专利技术可以直接在界面上制作场景,增加了在制作UI界面特效时的易用性。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,并与本专利技术的实施例一起,用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1为根据本专利技术的在UGUI中嵌入特效的方法流程图;图2为根据现有技术嵌入特效的示意图;图3为根据本专利技术的方法嵌入特效的示意图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。对图形管线绘制主要分成三个阶段,分别是应用程序阶段、几何阶段和光栅阶段。本专利技术的在UGUI中嵌入特效的方法主要涉及的是第一个阶段(应用程序阶段)。图形管线绘制在应用程序阶段最终是要将几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线传递给图形硬件。本专利技术是在数据上进行了处理。图1为根据本专利技术的在UGUI中嵌入特效的方法流程图。如图1所示,本专利技术的嵌入特效的方法包括以下步骤:首先,在步骤101,缓存具有需要渲染网格的渲染组件,并且通过禁用该网格渲染组件以剔除不需要的渲染内容。在步骤102,对渲染组件的网格顶点数据进行矩阵变换。具体包括,通过渲染组件获取网格顶点数据,结合所附属的UI节点的空间信息(位置、旋转、缩放信息)对顶点进行矩阵变换,将网格顶点从局部坐标系转换到UI节点所在坐标系。经过转换后,网格的空间关系已经映射到UI布局中。在步骤103,将转换后的顶点信息以及顶点属性赋值给UIGraphic的顶点。具体包括,从渲染组件中获取渲染所需的材质球,并赋值给UIGraphic,并维持其引用关系;将步骤S102中转换后的顶点信息以及顶点属性赋值给UIGraphic的顶点,并进行处理,使其能成为UI的一个元素。在步骤104,在UI中对所有处理后的顶点数据进行坐标系转换,并合成为一个网格。在步骤105,用曲线控制改变渲染组件上的材质球属性以及UI节点的空间信息,以产生特效动画序列。本专利技术的在UGUI中嵌入特效的方法会对不同的特效层进行批次合并,改写成UGUI内置的渲染方式,处理后的结果会如图3a或者图3b所示。当特效使用的Shader和UI使用的Shader为同一个时,处理结果为图3b,批次(DrwCall)还为1个。与现在主流做法(图2中所示)进行性能对比,批次(DrwCall)减少了N+1,N的大小由特效自身的Mesh个数决定。当特效使用的Shader和UI使用的Shader不一致时,处理结果为图3a,从原来的1个批次(DrwCall)变成3个。与现在主流做法(图2中所示)进行性能对比,批次(DrwCall)减少了N-1。本专利技术还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述的在UGUI中嵌入特效的方法的步骤,再次不再赘述。因此,本专利技术解决了在UI中嵌入特效导致批次过高的问题,有效地减少了批次,增加了性能。现有的在制作界面特效时会直接在场景中制作而不是在界面上,这样的话程序还要根据界面分辨率的不同进行缩放(Transform.Scale)。但是如果使用一样的渲染方式,那么在制作特效的时候就可以直接在界面上进行特效制作和编辑,也不需要程序根据不同的分辨率进行额外地缩放。并且,在涉及不同分辨率的时候特效也会和UI界面一样进行整体自适应,不会存在对UI界面和特效单独缩放,而导致不同分辨率下UI界面和特效出现大小不一致的情况。本领域普通技术人员可以理解:以上所述仅为本专利技术的优选实施例而已,并不用于限制本专利技术,尽管参照前述实施例对本专利技术进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。本文档来自技高网...

【技术保护点】
1.一种在UGUI中嵌入特效的方法,包括以下步骤:1)缓存具有需要渲染网格的渲染组件;2)通过所述渲染组件获取网格顶点数据,结合所附属的UI节点的空间信息对顶点进行矩阵变换,将网格顶点从局部坐标系转换到UI节点所在坐标系;3)从渲染组件中获取渲染所需的材质球,并赋值给UIGraphic,并维持其引用关系;将步骤2)中转换后的顶点信息以及顶点属性赋值给UIGraphic的顶点,并进行处理,使其能成为UI的一个元素;4)在UI中对所有处理后的顶点数据进行坐标系转换并合成为一个网格;5)用曲线控制改变渲染组件上的材质球属性以及UI节点的空间信息,以产生特效动画序列。

【技术特征摘要】
1.一种在UGUI中嵌入特效的方法,包括以下步骤:1)缓存具有需要渲染网格的渲染组件;2)通过所述渲染组件获取网格顶点数据,结合所附属的UI节点的空间信息对顶点进行矩阵变换,将网格顶点从局部坐标系转换到UI节点所在坐标系;3)从渲染组件中获取渲染所需的材质球,并赋值给UIGraphic,并维持其引用关系;将步骤2)中转换后的顶点信息以及顶点属性赋值给UIGraphic的顶点,并进行处理,使其能成为UI的一个元素;4)在UI中对所有处理后的顶点数据进行坐标系转换并合成为一个网格;5)用曲线控制改变渲染组件上的材质球属性以及UI节点的空间信息,以产生特效动...

【专利技术属性】
技术研发人员:张仁杰
申请(专利权)人:苏州蜗牛数字科技股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1