一种SrollView滑动卡顿的优化方法、装置、设备和可读存储介质与流程

文档序号:21277532发布日期:2020-06-26 23:22阅读:401来源:国知局
一种SrollView滑动卡顿的优化方法、装置、设备和可读存储介质与流程

本申请涉及unity技术领域,尤其涉及一种scrollview滑动卡顿的方法、装置、设备和可读存储介质。



背景技术:

在使用unity开发游戏时,经常需要用到数据配置,为了方便查看修改数据,通常使用scrollview实现在unity编辑器里面以列表的形式查看数据。scrollview是unity编辑器中的一种ui组件,是一种滚动窗体,里面包含了许多小元素的单独窗体,可以滑动,在scrollview中,每次滑动窗体都会导致scrollview内的ui节点的mesh重建,cpu的耗时也随着子节点的增长而增长,当达到一定数量级就会出现滑动卡顿,产生明显的画面掉帧。



技术实现要素:

本申请提供了一种srollview滑动卡顿的优化方法、装置、设备和可读存储介质,用于解决现有的scrollview每次滑动窗体都需要ui节点的mesh重建,导致cpu随着子节点的增长而增加,容易出现滑动卡顿,产生明显的画面掉帧的技术问题。

有鉴于此,本申请第一方面提供了一种srollview滑动卡顿的优化方法,包括:

获取整个srollview和子节点mesh,记录所述srollview的原生位置后,将所述srollview和所有子节点移出主渲染相机屏幕;

通过辅助渲染相机对所述所有子节点进行渲染;

将渲染结果赋值到rendertexture上,得到渲染贴图;

将所述渲染贴图替换至所述原生位置;

在滑动所述srollview的窗口时,根据滑动的方向和步进逆向同步移动所述辅助渲染相机。

可选地,所述通过辅助渲染相机对所述所有子节点进行渲染,之前还包括:

获取所述srollview的原生渲染窗口大小;

相应地,所述通过辅助渲染相机对所述所有子节点进行渲染,包括:

通过辅助渲染相机对所述所有子节点进行预置渲染窗口大小的渲染,所述预置渲染窗口大小与所述srollview的原生渲染窗口大小相等。

可选地,所述将渲染结果赋值到rendertexture上,得到渲染贴图,之后还包括:

存储所述渲染贴图,构建渲染贴图库。

可选地,所述在滑动所述srollview的窗口时,根据滑动的方向和步进逆向同步移动所述辅助渲染相机,之后还包括:

记录每次滑动所述srollview的窗口时的画面数据信息。

本申请第二方面提供了一种srollview滑动卡顿的优化装置,包括:

获取模块,用于获取整个srollview和子节点mesh,记录所述srollview的原生位置后,将所述srollview和所有子节点移出主渲染相机屏幕;

辅助模块,用于通过辅助渲染相机对所述所有子节点进行渲染;

赋值模块,用于将渲染结果赋值到rendertexture上,得到渲染贴图;

替换模块,用于将所述渲染贴图替换至所述原生位置;

逆向移动模块,用于在滑动所述srollview的窗口时,根据滑动的方向和步进逆向同步移动所述辅助渲染相机。

可选地,还包括:

窗口获取模块,用于获取所述srollview的原生渲染窗口大小;

相应地,所述辅助模块具体用于:

通过辅助渲染相机对所述所有子节点进行预置渲染窗口大小的渲染,所述预置渲染窗口大小与所述srollview的原生渲染窗口大小相等。

可选地,还包括:存储模块;

所述存储模块,用于存储所述渲染贴图,构建渲染贴图库。

可选地,还包括:记录模块;

所述记录模块,用于记录每次滑动所述srollview的窗口时的画面数据信息。

本申请第三方面提供了一种srollview滑动卡顿的优化设备,所述设备包括处理器和存储器;

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行第一方面任一种所述的srollview滑动卡顿的优化方法。

本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面任一种所述的srollview滑动卡顿的优化方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请中提供了一种srollview滑动卡顿的优化方法,包括:获取整个srollview和子节点mesh,记录srollview的原生位置后,将所述srollview和所有子节点移出主渲染相机屏幕;通过辅助渲染相机对所有子节点进行渲染;将渲染结果赋值到rendertexture上,得到渲染贴图;将渲染贴图替换至原生位置;在滑动srollview的窗口时,根据滑动的方向和步进逆向同步移动所述辅助渲染相机。本申请提供的srollview滑动卡顿的优化方法,采用逆向渲染srollview的方式,将整个srollview的所有子节点移出主渲染相机屏幕外,使用辅助渲染相机渲染srollview,将渲染结果赋值到rendertexture上,得到渲染贴图,将得到渲染贴图替换到srollview的原生位置,在滑动srollview时,不需要重建srollview下的子节点mesh,采用逆向移动辅助渲染相机的方式来达到现有的移动所有ui节点并重建mesh的效果,节省了重建mesh的操作,不会因子节点的增多而导致在滑动过程中出现画面掉帧,解决了现有的scrollview每次滑动窗体都需要ui节点的mesh重建,导致cpu随着子节点的增长而增加,容易出现滑动卡顿,产生明显的画面掉帧的技术问题。

附图说明

图1为本申请实施例中提供的一种srollview滑动卡顿的优化方法的一个流程示意图;

图2为本申请实施例中提供的一种srollview滑动卡顿的优化方法的另一流程示意图;

图3为本申请实施例中提供的一种srollview滑动卡顿的优化装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了便于理解,请参阅图1和图2,本申请提供了一种srollview滑动卡顿的优化方法的一个实施例,包括:

步骤101、获取整个srollview和子节点mesh,记录srollview的原生位置后,将srollview和所有子节点移出主渲染相机屏幕。

需要说明的是,在不断的进行srollview滑动测试中,发现当子节点的数量超过300时,就会出现明显掉帧,当子节点超过1000时,画面掉帧达到3帧以上,因此,为优化滑动卡顿画面掉帧问题,提出了本申请的优化方案。srollview在第一次创建时就已经建好了mesh。本申请实施例中,首先需要获取整个srollview及其下包含的所有子节点mesh,记录下srollview的原生位置,然后将整个srollview及其下包含的所有子节点移出到主渲染相机屏幕之外。步骤102、通过辅助渲染相机对所有子节点进行渲染。

需要说明的是,将整个srollview及其下包含的所有子节点移出到主渲染相机屏幕之外之后,通过辅助渲染相机对移出到主渲染相机屏幕之外的所有子节点进行渲染。还需要说明的是,为了避免在渲染操作时做相机镜像操作导致子节点发生变形,需要将获取到srollview的原生渲染窗口大小,将辅助渲染相机的渲染窗口大小设置为与srollview的原生渲染窗口大小一致。

步骤103、将渲染结果赋值到rendertexture上,得到渲染贴图。

需要说明的是,在渲染结束后,将渲染结果赋值到一张rendertexture上,得到渲染贴图。为了对渲染效果进行追溯,还可以将渲染贴图保存,构建渲染贴图库以方便后续的分析处理。

步骤104、将渲染贴图替换至原生位置。

需要说明的是,原scrollview在主渲染相机中渲染,本申请实施例中将scrollview移除主渲染相机之外,用另一个辅助渲染相机渲染后得到的rendertexture替换掉原来本应该出现的scrollview的位置。

步骤105、在滑动srollview的窗口时,根据滑动的方向和步进逆向同步移动辅助渲染相机。

需要说明的是,在滑动srollview的窗口时,不进行srollview下的子节点mesh重建,采用朝向相反方向移动辅助渲染相机的方式来达到原本移动所有ui节点并重建mesh的效果。原生scrollview在滑动的时候,如果是向上滑动,那么scrollview下所有的子节点都是同时一起向上滑动,而本申请实施例中的逆向则是保持所有的子节点不动,向下移动辅助渲染相机,假如以辅助渲染相机为参考物,造成的错觉就是,所有的子节点都在往上移动。原scrollview在滑动的过程中,需要重建所有子节点的mesh,节点越多越耗时,而本申请实施例的方法省掉了重建mesh的这一步操作,在scrollview第一次创建时就已经建立好了mesh,后续的滑动过程中,只是将辅助渲染相机移动而已。

还需要说明的是,为了验证本申请实施例中的srollview滑动卡顿的优化方法的实施效果,还可以记录每次滑动srollview的窗口时的画面数据信息,根据记录的画面数据信息分析是否发生画面掉帧或其他异常异常。

本申请实施例中提供的srollview滑动卡顿的优化方法,采用逆向渲染srollview的方式,将整个srollview的所有子节点移出主渲染相机屏幕外,使用辅助渲染相机渲染srollview,将渲染结果赋值到rendertexture上,得到渲染贴图,将得到渲染贴图替换到srollview的原生位置,在滑动srollview时,不需要重建srollview下的子节点mesh,采用逆向移动辅助渲染相机的方式来达到现有的移动所有ui节点并重建mesh的效果,节省了重建mesh的操作,不会因子节点的增多而导致在滑动过程中出现画面掉帧,解决了现有的scrollview每次滑动窗体都需要ui节点的mesh重建,导致cpu随着子节点的增长而增加,容易出现滑动卡顿,产生明显的画面掉帧的技术问题。

为了便于理解,请参阅图3,本申请中提供了一种srollview滑动卡顿的优化装置的实施例,包括:

获取模块,用于获取整个srollview和子节点mesh,记录srollview的原生位置后,将srollview和所有子节点移出主渲染相机屏幕。

辅助模块,用于通过辅助渲染相机对所有子节点进行渲染。

赋值模块,用于将渲染结果赋值到rendertexture上,得到渲染贴图。

替换模块,用于将渲染贴图替换至原生位置。

逆向移动模块,用于在滑动srollview的窗口时,根据滑动的方向和步进逆向同步移动辅助渲染相机。

进一步地,还可以包括:

窗口获取模块,用于获取srollview的原生渲染窗口大小。

相应地,辅助模块具体用于:

通过辅助渲染相机对所有子节点进行预置渲染窗口大小的渲染,预置渲染窗口大小与srollview的原生渲染窗口大小相等。

进一步地,还可以包括:存储模块;

存储模块,用于存储渲染贴图,构建渲染贴图库。

进一步地,还可以包括:记录模块;

记录模块,用于记录每次滑动srollview的窗口时的画面数据信息。

本申请中提供了一种srollview滑动卡顿的优化设备,设备包括处理器以及存储器:

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行前述的srollview滑动卡顿的优化方法实施例中的srollview滑动卡顿的优化方法。

本申请中提供了一种计算机可读存储介质的实施例,计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述的srollview滑动卡顿的优化方法实施例中的srollview滑动卡顿的优化方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机系统(可以是个人计算机,服务器,或者网络系统等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1