掌桥专利:专业的专利平台
掌桥专利
首页

一种游戏中UI系统的优化方法及装置

文献发布时间:2024-04-18 19:58:53


一种游戏中UI系统的优化方法及装置

技术领域

本申请属于图像渲染技术领域,具体涉及一种游戏中UI系统的优化方法、装置、设备及介质。

背景技术

随着游戏行业的发展,游戏中通过UI(User Interface,用户界面)系统所表现出来的世界观不断庞大。随着玩家数量的增加以及游戏玩法的不断丰富,UI系统的渲染请求不断堆积,系统开销也在不断增加,为了提高玩家的游戏体验,对UI系统的优化变得十分重要。

相关技术中,为了提高UI系统的渲染速度,需要对待渲染的UI组件进行合批处理。现有的组件合批方式主要是通过记录UI组件的层级号,将相同层级号中材质以及纹理信息相同的组件进行合批,并将各批次的UI组件进行排序,得到一个有序的批次序列,如果相邻间的两个批次正好可以合批就将相邻两个批次的组件进行合批,最终生成合批后的DrawCall,并输出给GPU完成渲染。

由于相关技术中对UI系统优化的方式是在不影响组件层级的情况下尽量完成组件合批,来减少DrawCall数量,而对于不相邻层级可以合批的UI组件却无法合批,因此,利用现有技术存在组件合批能力差、渲染效率提升不明显,进而导致UI系统优化效果差的问题。

发明内容

本申请实施例提供一种游戏中UI系统的优化方法、装置、设备及介质,目的是解决现有技术中组件合批能力差、渲染效率提升不明显以及UI系统优化效果差的问题,通过基于游戏界面待展示UI组件的层级参数将所有组件划分到至少两个组别中,并对每个组别中的UI组件进行强制合批处理,可以大幅提升组件的合批数量,通过根据合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果,可以提高组件的渲染效率,进而提高UI系统的优化效果。

第一方面,本申请实施例提供了一种游戏中UI系统的优化方法,所述方法包括:

获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;

基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;

对每个组别中的UI组件进行强制合批处理,得到合批结果;

根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。

进一步的,在根据所述合批结果对各待展示UI组件进行渲染之前,所述方法还包括:

获取所述合批结果中各待展示UI组件的合批层级;其中,所述合批层级初始化为各组别的所述基础层级;

根据所述层级参数确定各所述待展示UI组件的原始层级关系,并根据所述合批层级确定合批后各所述待展示UI组件的合批层级关系;

将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件。

进一步的,在将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件之后,所述方法还包括:

根据预设层级递增区间对所述层级待修改UI组件的合批层级进行修改;其中,预设层级递增区间为各组别的预设子层级区间,且所述预设子层级区间为[1,10];

若所述层级待修改UI组件修改后的层级关系仍与所述原始层级关系不同,则将所述层级待修改UI组件以及其子UI组件重新划分组别。

进一步的,所述根据预设层级递增区间对所述层级待修改UI组件的合批层级进行修改,包括:

采用如下公式对所述层级待修改UI组件的合批层级进行修改:

Layer=BaseLayer+SubLayer;

其中,BaseLayer为所述基础层级;SubLayer为所述预设子层级;Layer为所述合批层级修改后的结果。

进一步的,在基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中之后,所述方法还包括:

根据各个组别的深度参数确定各个组别间的组间层级关系,并根据所述组件层级关系对所述各个组别进行组间排序。

进一步的,在根据所述组件层级关系对所述各个组别进行组间排序之后,所述方法还包括:

根据所述待展示UI组件的深度参数确定每个组别中的所述待展示UI组件的组内层级关系,并根据所述组内层级关系分别对每个组别中的所述待展示UI组件进行组内排序。

进一步的,在对每个组别中的UI组件进行强制合批处理,得到合批结果之后,所述方法还包括:

获取所述待展示UI组件的组件数量,以确定合批优化前的DrawCall数量;

识别所述合批结果中的DrawCall数量,以确定合批优化后的DrawCall数量;

根据所述合批优化前的DrawCall数量以及所述合批优化后的DrawCall数量计算所述DrawCall优化率。

第二方面,本申请实施例提供了一种游戏中UI系统的优化装置,所述装置包括:

组件获取模块,用于获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;

层级划分模块,用于基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;

组件合批模块,用于对每个组别中的UI组件进行强制合批处理,得到合批结果;

组件渲染模块,用于根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。

第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。

第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。

在本申请实施例中,获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;对每个组别中的UI组件进行强制合批处理,得到合批结果;根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。通过上述游戏中UI系统的优化方法,解决了现有技术中组件合批能力差、渲染效率提升不明显以及UI系统优化效果差的问题,通过基于游戏界面待展示UI组件的层级参数将所有组件划分到至少两个组别中,并对每个组别中的UI组件进行强制合批处理,可以大幅提升组件的合批数量,通过根据合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果,可以提高组件的渲染效率,进而提高UI系统的优化效果。

附图说明

图1是本申请实施例一提供的游戏中UI系统的优化方法的流程示意图;

图2是本申请实施例提供的开启合批UIPanel集的树形关系结构图;

图3是本申请实施例二提供的确定层级待修改UI组件的流程示意图;

图4是本申请实施例三提供的游戏中UI系统的优化装置的结构示意图;

图5是本申请实施例四提供的电子设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。

下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的游戏中UI系统的优化方法、装置、设备及介质进行详细地说明。

实施例一

图1是本申请实施例一提供的游戏中UI系统的优化方法的流程示意图。如图1所示,具体包括如下步骤:

S101,获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;

首先,本方案的使用场景可以是对UI系统中的待展示组件进行组件渲染的场景,尤其是对UI系统中的待展示组件进行合批渲染的场景。

基于上述使用场景,可以理解的,本申请的执行主体可以是具有组件层级获取、组件分组以及组件合批能力的智能终端,例如:手机、电脑以及平板等,此处不做过多的限定。

其中,UI(User Interface,用户界面)是系统和用户之间进行交互和信息交换的媒介,是介于用户与硬件之间,为彼此之间交互沟通而设计,是信息产品的功能载体和典型特征,作为系统的可用形式而存在,使得用户能够方便有效地去操作硬件以达成双向交互,完成所希望的工作。本方案中的UI可以是游戏系统与玩家之间的交互界面,即游戏界面。玩家可以根据需求通过UI界面获取游戏信息以及发出游戏控制指令等。UI组件可以是在UI界面中显示的成套元件,是游戏界面设计常用控件或元件,包含了许多的控制器、按钮、弹窗等。所述元件可以将一段或几段完成各自功能的代码段封装为一个或几个独立的部分,所述UI组件包含了这样一个或几个具有各自功能的代码段。本方案中的UI组件可以是在UI界面中显示的视图单元,玩家通过UI组件可以获取游戏系统相应的数据或者响应等。待展示UI组件可以是在当前游戏界面中待渲染的UI组件。各待展示UI组件的层级参数可以是Depth参数。每一个待展示UI组件都具有一个Depth参数,所述Depth参数决定了所述待展示UI组件所在的渲染层级参数,Depth参数值越大代表待展示UI组件显示的优先级越高,渲染顺序越靠后,越趋向于在界面更上层显示。

在一个实施例中,可以通过读取游戏设计数据确定游戏界面的所有待展示UI组件的组件名称,并根据所述组件名称通过组件查找代码获取各待展示UI组件的层级参数。

在本实施例中,为了提高组件渲染结果的可靠性,可以对待展示UI组件预先设置渲染层级,指定渲染的先后顺序(层级低的先渲染),进而在不同层上分别进行组件渲染,在渲染完成之后再将它们合成在一起组成游戏界面。在渲染完毕后,界面设计人员可以根据需求小范围地对UI组件进行颜色修改以及减少非重点对象的渲染画质等,避免了由于部分画面改动造成的整体画面重新渲染的问题。

S102,基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;

其中,各待展示UI组件划分的组别可以是UIPanel组别。所述UIPanel组别用来收集和管理它下面所有的UI组件,并将相同材质以及纹理的UI组件进行合批,创建合批后的DrawCall。所述DrawCall就是CPU对图形绘制接口的调用,CPU通过调用图形库(directx/opengl)接口,命令GPU进行渲染操作。基础层级可以是每个组别所在的渲染层级。所述基础层级的层级参数可以是Depth参数,每个组别的基础层级都分别对应一个Depth参数,并通过所述Depth参数进行隔离。根据所述Depth参数可以确定各组别的渲染顺序。

在一个实施例中,可以基于各待展示UI组件的层级参数以及游戏界面中各待展示UI组件的组件间层级关系,将所有组件划分到至少两个UIPanel中,并为每个UIPanel设置基础层级。所述UIPanel可以将所述基础层级作为组别深度(Depth),用BaseLayer表示。所述BaseLayer等于开始遍历此UIPanel的第一个OnPaint时传入的Layer+1,即BaseLayer是由OnPaint遍历先后确定的。UIPanel的渲染顺序是靠自身的BaseLayer决定的,BaseLayer越小对应UIPenal的待展示UI组件在渲染list中越靠前,则渲染时越先渲染,会被靠后渲染的UI组件遮挡。通过设置UIPanel的基础层级,可以使得所有UI组件进行组间的整体渲染排序。

在本实施例中,基于全部UI组件的层级参数以及组件层级关系,Unity的NGUI使用UIPanel来管理UI组件的DrawCall,在一个UIPanel下面的UI组件,UIPanel会根据深度、相同图集等信息来“合并”多个UI组件,把全部UI组件分成多组,组和组之间只有整体的前后关系(由UIPanel的深度决定前后),细致的前后关系在组内进行组织排列。

在一个可行的实施例中,可选的,在基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中之后,所述方法还包括:

根据各个组别的深度参数确定各个组别间的组间层级关系,并根据所述组件层级关系对所述各个组别进行组间排序。

其中,各个组别的深度参数可以是各个组别的基础层级参数。组件层级关系可以是各个组别的渲染层级关系,即组别渲染顺序。组间排序可以是各个组别的渲染排序。

在一个实施例中,可以根据各个组别的深度参数确定各个组别间的组间层级关系,并根据所述组件层级关系对所述各个组别进行组间排序。所述UIPanel可以将所述基础层级BaseLayer作为组别深度(Depth),根据所述BaseLayer可以确定各UIPanel的组间渲染层级关系,并根据所述组间渲染层级关系对各UIPanel组别进行组间渲染排序。

本申请实施例,通过根据各个组别的深度参数确定各个组别间的组间层级关系,并根据所述组件层级关系对所述各个组别进行组间排序,可以对各个组别进行整体的组间渲染排序,避免了由于UI组件层级过多导致的合批困难的问题,提高了对UI系统中组件合批渲染的效率。

在一个可行的实施例中,可选的,在根据所述组件层级关系对所述各个组别进行组间排序之后,所述方法还包括:

根据所述待展示UI组件的深度参数确定每个组别中的所述待展示UI组件的组内层级关系,并根据所述组内层级关系分别对每个组别中的所述待展示UI组件进行组内排序。

其中,组内层级关系可以是同一组别内的待展示UI组件的渲染层级关系,即组件渲染顺序。待展示UI组件的组内排序可以是对同一组别中的UI组件进行组内渲染排序。

在一个实施例中,可以根据所述待展示UI组件的深度参数确定每个组别中的所述待展示UI组件的组内渲染顺序,并根据所述组内渲染顺序分别对每个组别中的所述待展示UI组件进行组内渲染排序。可以对同一UIPanel进行内部分层,一个UIPanel占用[BaseLayer,BaseLayer+10]这10个layer,根据所述待展示UI组件的深度参数将所述待展示UI组件分配至对应layer。

本申请实施例,通过根据所述待展示UI组件的深度参数确定每个组别中的所述待展示UI组件的组内层级关系,并根据所述组内层级关系分别对每个组别中的所述待展示UI组件进行组内排序,可以避免组件间渲染顺序错误的问题,提高了对UI系统中组件渲染的可靠性。

S103,对每个组别中的UI组件进行强制合批处理,得到合批结果;

其中,合批可以是将多个材质以及纹理相同的UI组件打包成一个DrawCall的过程。一次DrawCall相当于CPU与GPU进行一次沟通的成本,如果CPU能一次多打包一些信息给GPU,那么DrawCall数量就可以减少,从而减少了CPU对GPU绘制请求的次数,达到使GPU能够批量渲染以及提高渲染性能的目的。合批结果可以是将UI组件强制合批后,得到的每个组别中的DrawCall。

在一个实施例中,可以按照忽略组件层级将每个组别中材质以及纹理相同的UI组件直接进行合批的方式对每个组别中的UI组件进行强制合批处理,得到合批后的DrawCall。

图2是本申请实施例提供的开启合批UIPanel集的树形关系结构图。

在一个实施例中,Slate系统收集各个UI组件的信息构建DrawCall时,按父子和先后顺序遍历所有组件,其中,标记为开启合批的UIPanel集就构成了如图2所示的树形关系。一个UIPanel有一个BaseLayer作为UIPanel的深度,BaseLayer等于开始遍历此UIPanel的第一个OnPaint时传入的Layer+1,即BaseLayer是由OnPaint遍历先后确定的(图2中的UIPanel遍历顺序为:UIPanel1-UIPanel2-UIPanel3-UIPanel4)。为了在一个UIPanel内尽力合批但又不影响前后关系,可以给UIPanel内部分层,一个UIPanel占用[BaseLayer,BaseLayer+10]这10个layer给其UIPanel内UI组件使用,[1,10]作为UI组件的SubLayer(子层),该UI组件的最终layer=BaseLayer+SubLayer,可以使用UI组件的PreservedLayerNum参数作为SubLayer,默认所有UI组件的PreservedLayerNum=0,如果某个UI组件层级不对则可以把它的PreservedLayerNum调高,如果层级还不对,可以把该UI组件和其孩子划分为新的UIPanel,即UIPanel是可以嵌套的,例如:UIPanel3镶嵌在UIPanel2内。本方案的合批思路是是先拆分UIPanel分开UI显示,然后在UIPanel内部把多变的层级问题直接简化成了统一层级+特别层级,实际实现时,项目开发中设定了UserObject和CanvasUIPanel可以开启UIPanel,如果开启UIPanel,则它和它的子UI组件都属于一个UIPanel,也可以不开启。对于不属于任何UIPanel的UI组件,使用原来的layer,对于不开启UIPanel的界面,因为还是原来的遍历顺序,所以不会有层级问题。

在一个可行的实施例中,可选的,在对每个组别中的UI组件进行强制合批处理,得到合批结果之后,所述方法还包括:

获取所述待展示UI组件的组件数量,以确定合批优化前的DrawCall数量;

识别所述合批结果中的DrawCall数量,以确定合批优化后的DrawCall数量;

根据所述合批优化前的DrawCall数量以及所述合批优化后的DrawCall数量计算所述DrawCall优化率。

其中,DrawCall就是CPU对图形绘制接口的调用,CPU通过调用图形库(directx/opengl)接口,命令GPU进行渲染操作。一次DrawCall相当于CPU与GPU进行一次沟通的成本。合批优化前的DrawCall数量可以等于所示待展示UI组件的组件数量,合批优化后的DrawCall数量可以等于对所示待展示UI组件进行强制合批后的DrawCall数量。

在一个实施例中,可以通过读取游戏数据获取所述待展示UI组件的组件数量,以确定合批优化前的DrawCall数量。可以通过读取Game视口的Stats窗口中Batches的值获取合批结果中的DrawCall数量,还可以通过Window->Analysis->Profilter路径,获取合批结果中Rendering信息中DrawCall数量,将所述合批结果中的DrawCall数量作为合批优化后的DrawCall数量。根据所述合批优化前的DrawCall数量与所述合批优化后的DrawCall数量的差值与所述合批优化前的DrawCall数量进行比值计算,得到所述DrawCall数量的较少率,将所述减少率作为所述DrawCall优化率。

本方案,通过获取所述待展示UI组件的组件数量,确定合批优化前的DrawCall数量,并识别所述合批结果中的DrawCall数量,确定合批优化后的DrawCall数量,进而根据所述合批优化前的DrawCall数量以及所述合批优化后的DrawCall数量计算所述DrawCall优化率,可以达到将DrawCall的优化率进行反馈的目的,进而反馈出了对UI系统的优化程度,便于研发人员跟据优化程度进行进一步优化。

S104,根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。

在一个实施例中,可以根据所述合批结果中的DrawCall数量确定CPU需要与GPU的交互次数,并向所述GPU发出渲染指令,以控制所述GPU对各个DrawCall中的待展示UI组件进行批量渲染,得到游戏界面渲染结果。

本申请实施例所提供的技术方案,获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;对每个组别中的UI组件进行强制合批处理,得到合批结果;根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。通过上述游戏中UI系统的优化方法,解决了现有技术中组件合批能力差、渲染效率提升不明显以及UI系统优化效果差的问题,通过基于游戏界面待展示UI组件的层级参数将所有组件划分到至少两个组别中,并对每个组别中的UI组件进行强制合批处理,可以大幅提升组件的合批数量,通过根据合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果,可以提高组件的渲染效率,进而提高UI系统的优化效果。

实施例二

图3是本申请实施例二提供的确定层级待修改UI组件的流程示意图。如图3所示,具体包括如下步骤:

S301,获取所述合批结果中各待展示UI组件的合批层级;其中,所述合批层级初始化为各组别的所述基础层级;

其中,合批层级可以是各待展示UI组件对应组别的基础层级。

在一个实施例中,可以根据各组别的基础层级确定所述合批结果中各待展示UI组件的合批层级。其中,所述合批层级初始化为各组别的所述基础层级。

S302,根据所述层级参数确定各所述待展示UI组件的原始层级关系,并根据所述合批层级确定合批后各所述待展示UI组件的合批层级关系;

在一个实施例中,根据所述层级参数可以确定各所述待展示UI组件的组件渲染层级,根据所述组件渲染层级间的关系确定各所述待展示UI组件的原始层级关系。由于各待展示UI组件的合批层级初始化为各组别的所述基础层级,因此,可以根据所述合批层级确定对各待展示UI组件进行合批后的各所述待展示UI组件的合批层级关系。

S303,将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件。

在一个实施例中,由于对同一组别中的待展示UI组件进行合批时是忽略组件的实际层级关系进行的强制合批,为了确保在合批后各待展示UI组件渲染顺序的准确性,需要将合批后层级关系不正确的待展示UI组件的层级进行修改。根据所述原始层级关系,可以确定各待展示UI组件的组件合批层级关系是否正确,将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件。

在一个可行的实施例中,可选的,在将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件之后,所述方法还包括:

根据预设层级递增区间对所述层级待修改UI组件的合批层级进行修改;其中,预设层级递增区间为各组别的预设子层级区间,且所述预设子层级区间为[1,10];

若所述层级待修改UI组件修改后的层级关系仍与所述原始层级关系不同,则将所述层级待修改UI组件以及其子UI组件重新划分组别。

其中,修改后的层级关系可以是对所述层级待修改UI组件的合批层级进行修改后得到的层级关系。

在一个实施例中,由于对同一组别中的待展示UI组件的组件层级参数可以不同,为了不影响同一组别内的组件渲染顺序,可以通过为各个组别预设子层区间对各个组别进行分层,供所述待展示UI组件进行组内排序。所述预设子层级区间为[1,10]。将所述预设子层级区间作为预设层级递增区间,根据所述预设层级递增区间对所述待修改UI组件的合批层级进行修改,在UIPanel内部把各所述待展示UI组件的层级规划为统一层级+特别层级的形式。例如:UIPanel内部分层,一个UIPanel占用[BaseLayer,BaseLayer+10]这10个layer给其UIPanel内UI组件使用,[1,10]作为UI组件的SubLayer(子层),该UI组件的最终layer=BaseLayer+SubLayer,可以使用UI组件的PreservedLayerNum参数作为SubLayer,默认所有UI组件的PreservedLayerNum=0,如果某个UI组件层级不对则可以把它的PreservedLayerNum调高。

在一个实施例中,若所述层级待修改UI组件修改后的层级关系仍与所述原始层级关系不同,则可以将所述层级待修改UI组件以及其子UI组件重新划分组别。例如:将修改层级后的待修改UI组件和其孩子划分为新的UIPanel,并将所述新的UIPanel嵌套在其原始UIPanel内。

本方案,通过根据预设层级递增区间对所述层级待修改UI组件的合批层级进行修改,并将修改后层级关系仍与原始层级关系不同的待修改UI组件以及其子UI组件重新划分组别,可以避免由于强制合批导致的组件渲染顺序错误的问题,在保证合批数量的前提下,提高了对UI组件合批渲染的可靠性,进而提高了对UI系统优化的可靠性。

在一个可行的实施例中,可选的,所述根据预设层级递增区间对所述层级待修改UI组件的合批层级进行修改,包括:

采用如下公式对所述层级待修改UI组件的合批层级进行修改:

Layer=BaseLayer+SubLayer;

其中,BaseLayer为所述基础层级;SubLayer为所述预设子层级;Layer为所述合批层级修改后的结果。

在一个实施例中,在对各组别中的UI组件进行强制合批后,所述待展示UI组件的组件层级为各组别的基础层级,而同一组别内部的UI组件具有不同的渲染层级,因此,可以采用公式:Layer=BaseLayer+SubLayer对所述待修改UI组件的合批层级进行修改。其中,BaseLayer为所述基础层级;SubLayer为所述预设子层级;Layer为所述合批层级修改后的结果。

本方案,通过采用基础层级加预设子层级的形式对层级关系有误的UI组件进行层级修改,可以简化UI组件的层级修改方式,提高了对UI组件层级修改的效率以及可靠性,避免了层级渲染顺序出错的问题,进一步提高了对UI系统优化的可靠性。

本申请实施例所提供的技术方案,通过获取所述合批结果中各待展示UI组件的合批层级,根据所述层级参数确定各所述待展示UI组件的原始层级关系,并根据所述合批层级确定合批后各所述待展示UI组件的合批层级关系,将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件,可以达到将合批后层级关系错误的UI组件进行层级修改的目的,在确保组件合批数量的前提下,提高了UI组件合批渲染的可靠性,进而提高了对UI系统优化的可靠性。

实施例三

图4是本申请实施例三提供的游戏中UI系统的优化装置的结构示意图。如图4所示,具体包括如下:

组件获取模块401,用于获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;

层级划分模块402,用于基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;

组件合批模块403,用于对每个组别中的UI组件进行强制合批处理,得到合批结果;

组件渲染模块404,用于根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。

进一步的,所述装置还包括:

合批层级获取模块,用于获取所述合批结果中各待展示UI组件的合批层级;其中,所述合批层级初始化为各组别的所述基础层级;

层级关系确定模块,用于根据所述层级参数确定各所述待展示UI组件的原始层级关系,并根据所述合批层级确定合批后各所述待展示UI组件的合批层级关系;

层级待修改UI组件确定模块,用于将所述原始层级关系与所述合批层级关系不同的待展示UI组件作为层级待修改UI组件。

进一步的,所述装置还包括:

层级修改模块,用于根据预设层级递增区间对所述层级待修改UI组件的合批层级进行修改;其中,预设层级递增区间为各组别的预设子层级区间,且所述预设子层级区间为[1,10];

组别更新模块,用于在所述层级待修改UI组件修改后的层级关系仍与所述原始层级关系不同的情况下,将所述层级待修改UI组件以及其子UI组件重新划分组别。

进一步的,所述层级修改模块,具体用于:

采用如下公式对所述层级待修改UI组件的合批层级进行修改:

Layer=BaseLayer+SubLayer;

其中,BaseLayer为所述基础层级;SubLayer为所述预设子层级;Layer为所述合批层级修改后的结果。

进一步的,层级划分模块402,还用于:

根据各个组别的深度参数确定各个组别间的组间层级关系,并根据所述组件层级关系对所述各个组别进行组间排序。

进一步的,层级划分模块402,还用于:

根据所述待展示UI组件的深度参数确定每个组别中的所述待展示UI组件的组内层级关系,并根据所述组内层级关系分别对每个组别中的所述待展示UI组件进行组内排序。

进一步的,所述组件合批模块403,还用于:

获取所述待展示UI组件的组件数量,以确定合批优化前的DrawCall数量;

识别所述合批结果中的DrawCall数量,以确定合批优化后的DrawCall数量;

根据所述合批优化前的DrawCall数量以及所述合批优化后的DrawCall数量计算所述DrawCall优化率。

本申请实施例所提供的技术方案,组件获取模块,用于获取游戏界面的待展示UI组件,以及各待展示UI组件的层级参数;层级划分模块,用于基于各待展示UI组件的层级参数,将所有组件划分到至少两个组别中;其中,每个组别设置有基础层级;组件合批模块,用于对每个组别中的UI组件进行强制合批处理,得到合批结果;组件渲染模块,用于根据所述合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果。通过上述游戏中UI系统的优化装置,解决了现有技术中组件合批能力差、渲染效率提升不明显以及UI系统优化效果差的问题,通过基于游戏界面待展示UI组件的层级参数将所有组件划分到至少两个组别中,并对每个组别中的UI组件进行强制合批处理,可以大幅提升组件的合批数量,通过根据合批结果对各待展示UI组件进行渲染,得到游戏界面渲染结果,可以提高组件的渲染效率,进而提高UI系统的优化效果。

本申请实施例中的游戏中UI系统的优化装置可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobilepersonalcomputer,UMPC)、上网本或者个人数字助理(personaldigitalassistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(NetworkAttachedStorage,NAS)、个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。

本申请实施例中的游戏中UI系统的优化装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。

本申请实施例提供的游戏中UI系统的优化装置能够实现上述各方法实施例实现的各个过程,为避免重复,这里不再赘述。

实施例四

如图5所示,本申请实施例还提供一种电子设备500,包括处理器501,存储器502,存储在存储器502上并可在所述处理器501上运行的程序或指令,该程序或指令被处理器501执行时实现上述游戏中UI系统的优化装置实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。

实施例五

本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述游戏中UI系统的优化装置实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等。

实施例六

本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述游戏中UI系统的优化装置实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

技术分类

06120116513414