本发明涉及贴图领域,具体而言,涉及一种贴图的处理方法、装置、存储介质和电子装置。
背景技术:
目前,大多数游戏项目都会根据项目中的功能,命名不同功能的贴图文件夹,美术出图时将功能相关的贴图输出到对应功能命名的文件夹下,文件夹下的所有小图合并成一张大图,尽可能的降低各个模块功能间贴图的干扰,也利于美术后期查找和修改.在一定程度上,各个功能互不干扰,降低了ui界面打开时不必要的其他模块大贴图加载。
此外,还可以将界面打开时使用到的公共贴图复制拷贝,贴图a在功能模块a中使用,在功能模块b也使用,则贴图a同时存在于功能a和b的贴图文件夹下。
由上述可知,现有技术中公开的按功能分拆贴图的方案,虽然一定程度上解决了游戏ui界面打开加载过多大贴图的风险,但实际运行时,经常会遇到功能模块交互的情况,在打开某功能模块时不可避免的耦合其他模块的展示,从而加载别的功能模块贴图,内存飙高,造成游戏卡顿甚至进程崩溃。
采用复制拷贝贴图的方案,虽然解决了贴图功能交叉加载的情况,但造成了资源重复冗余,首先资源量成倍扩大,其次在索引此小贴图哈希时易造成二义干扰,同时,后期美术修改原始资源贴图,也会因为查找修改覆盖多份资源,造成不小的额外工作量。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种贴图的处理方法、装置、存储介质和电子装置,以至少解决相关技术中贴图分配不合理,浪费内存和增加工作量的技术问题。
根据本发明实施例的一个方面,提供了一种贴图的处理方法,包括:获取预设应用下多个功能组件对应的用户界面ui;获取每个ui中的节点对应的贴图的使用频率;根据使用频率将满足预设调价的贴图存放在对应的存储区域;在同一ui中加载存储区域存储的对应贴图。
根据本发明实施例的另一方面,还提供了一种贴图的处理装置,包括:第一获取模块,用于获取预设应用下多个功能组件对应的用户界面ui;第二获取模块,用于获取每个ui中的节点对应的贴图的使用频率;存放模块,用于根据使用频率将满足预设条件的贴图存放在对应的存储区域;加载模块,用于在同一ui中加载存储区域存储的对应贴图。
根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中所述的方法。
在本发明实施例中,采用在获取的用户界面ui中统计每个ui中的节点对应的贴图的使用频率,并根据贴图的使用频率将贴图存放在对应的存储区域,并在对应的存储区域加载贴图的方式。达到了可以根据贴图的使用频率对其进行分配的目的,从而实现了合理利用贴图的技术效果,进而解决了相关技术中贴图分配不合理,浪费内存和增加工作量的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种贴图的处理方法的移动终端的硬件结构框图;
图2是根据本发明实施例的贴图的处理方法的流程示意图;
图3是本实施例中的具体实施流程图;
图4是根据本发明实施例提供的贴图的处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种贴图的处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种贴图的处理方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的贴图的处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
图2是根据本发明实施例的贴图的处理方法的流程示意图,如图2所示,该方法包括如下步骤:
步骤s202,获取预设应用下多个功能组件对应的用户界面ui;
步骤s204,获取每个ui中的节点对应的贴图的使用频率;
步骤s206,根据使用频率将满足预设条件的贴图存放在对应的存储区域;
步骤s208,在同一ui中加载存储区域存储的对应贴图。
通过上述步骤,采用在获取的用户界面ui中统计每个ui中的节点对应的贴图的使用频率,并根据贴图的使用频率将贴图存放在对应的存储区域,并在对应的存储区域加载贴图的方式。达到了可以根据贴图的使用频率对其进行分配的目的,从而实现了合理利用贴图的技术效果,进而解决了相关技术中贴图分配不合理,浪费内存和增加工作量的技术问题。
需要说明的是,预设应用可以是某一款游戏,游戏中包括多个功能组件,功能组件有向对应的用户界面ui,例如,不同的场景对应的不同的用户界面。一个ui中可能包括多个节点,每个节点都会有相应的贴图。
本实施例中,会对预设应用中所有的ui中的节点进行遍历。统计出贴图的使用频率。
在一个可选的实施例中,获取预设应用下多个功能组件对应的用户界面ui,需要创建登录账号,登录账号用于解锁多个功能组件对应的ui,以使多个功能组件对应的ui在预设应用运行时处于开启状态;通过登录账号开启多个功能组件对应的ui。解锁多个功能组件对应的ui可以更加全面的统计出贴图的使用频率。创建登录账号可以避免ui界面未解锁的情况出现。
在一个可选的实施例中,统计每个ui中的节点对应的贴图的使用频率包括:递归遍历获取到的ui中的节点;统计多个功能组件对应的ui中每个ui下各个节点对应的贴图的使用次数。例如,在启动游戏客户端,并利用登录帐号登录之后,将游戏的所有ui界面依次打开,对每个界面所持有的节点递归遍历,获取界面中节点所有用到的贴图信息并记录。然后,统计记录每个节点对应的小贴图的使用情况。使用情况包括贴图对应使用ui界面的名称和使用次数。并根据使用情况将每个ui下各个节点对应的贴图的使用次数按照降序排列,根据排序结果和第一存储区域的存储容量将第一部分贴图存储至第一存储区域以及将第二部分贴图存储至第二存储区域,其中,第二存储区域与每个贴图所关联的ui标识对应。需要说明的是,第一存储区域可以是共用文件夹,第二存储区域可以是以界面命名的文件夹。
此外,第一部分贴图可以是使用频率比较高的贴图,第二部分贴图可以是使用频率比较低的贴图。
在一个可选的实施例中,在对第一部分的贴图和第二部分的贴图进行存放之后,会将第一存储区域内的贴图合并为第一目标贴图,以及将第二存储区域内与同一个ui标识对应的贴图合并为第二目标贴图,确定待使用的贴图路径,其中,待使用的贴图路径用于描述第一目标贴图和第二目标贴图的存储位置;将每个ui的初始贴图路径修改为待使用的贴图路径;通过待使用的贴图路径加载每个ui对应的第一目标贴图和第二目标贴图。在本实施例中,第一目标贴图是第一存储区域内的各个小贴图合并而成的一张大贴图。第二目标贴图是第二存储区域中的各个小贴图合并成的一张大贴图。在对贴图进行合并之后,需要重新修改路径加载合并之后的贴图。本实施例中对贴图的合并有效的提高了游戏打开ui界面时加载贴图的有效性和准确性,提高了实际游戏运行时的ui贴图使用率。
为了更好的理解本发明实施例,以下结合优选的实施例对本发明做进一步解释。
针对现有技术中存在的在打开某功能模块时不可避免的耦合其他模块的展示,从而加载别的功能模块贴图,内存飙高,造成游戏卡顿甚至进程崩溃。以及采用复制拷贝贴图的方案,造成资源重复冗余的问题,本实施例采取了以下方案:
首先,创建游戏中所有功能全部都解锁的账号(对应于上述中的登录账号),测试是在游戏的客户端进行,因此需要创建帐号登录游戏,功能解锁是为了帐号登录游戏后可以打开所有的界面,避免界面未解锁的情况出现。
其次,启动游戏客户端,并登录之前注册的帐号,将游戏的所有ui界面依次打开。对每个界面所持有的节点递归遍历,获取界面中节点所有用到的贴图信息并记录。
然后,统计记录每个节点对应的小贴图的使用情况,在同一个界面下的,重新分派到对贴图重新分派文件夹。
重新分派贴图文件夹后,同一个文件夹下的小图片合并成一张新的大贴图,这样,重新再打开ui界面时,本ui界面下的节点使用的贴图将公用一张贴图纹理,既可以节约总的贴图使用带下,同时渲染节点尽可能一个批次完成。
最后,运行游戏,检测上述优化效果.
图3是本实施例中的具体实施流程图,如图3所示,包括以下步骤:
s301:运行游戏,登录创建的登录账号;
s302:将此帐号的所有游戏功能模块全部解锁,保证可打开所有ui界面;
s303:标记不需要进行合并的贴图文件夹,如表情集合和粒子特效等,对所有界面依次打开,遍历统计当前打开界面节点的贴图;
s304:判断是否所有的界面都打开过,如果是,转入s305,否则,返回s302;
s305:汇总贴图对应使用界面名称和使用次数;
s306:将使用次数多的贴图按照使用次数降序放入公用贴图文件夹,直到不可再被放入,将其他贴图放入以界面命名的文件夹中;
s307:对文件夹检查校验,新文件夹小贴图合并成新的大贴图;修正游戏中引用的ui资源中的贴图路径;
s308:重新启动游戏,运行脚本,打开界面,检测ui贴图占用的内存和批次情况。
通过以上操作,可以发现了原始小图合并过程中分派不合理的情况.采用根据游戏中ui界面实际使用贴图情况重新组合分派小贴图,然后合并成大贴图的做法,有效的提高了游戏打开ui界面时加载贴图的有效性和准确性,提高了实际游戏运行时的ui贴图使用率,游戏运行打开界面时,不再需要加载额外的不必要大贴图,游戏进程内存下降.同时也降低了渲染ui的批次,界面大部分节点都共用功能贴图或公共贴图,在其他渲染状态条件相同时可以一个批次提交渲染节点,极大的提高了游戏的性能。
本发明实施例还提供了一种贴图的压缩装置,图4是根据本发明实施例提供的贴图的处理装置的结构示意图,如图4所示,该装置包括:
第一获取模块42,用于获取预设应用下多个功能组件对应的用户界面ui;
第二获取模块44,用于获取每个ui中的节点对应的贴图的使用频率;
存放模块46,用于根据使用频率将满足预设条件的贴图存放在对应的存储区域;
加载模块48,用于在同一ui中加载存储区域存储的对应贴图。
通过上述步骤,采用在获取的用户界面ui中统计每个ui中的节点对应的贴图的使用频率,并根据贴图的使用频率将贴图存放在对应的存储区域,并在对应的存储区域加载贴图的方式。达到了可以根据贴图的使用频率对其进行分配的目的,从而实现了合理利用贴图的技术效果,进而解决了相关技术中贴图分配不合理,浪费内存和增加工作量的技术问题。
需要说明的是,预设应用可以是某一款游戏,游戏中包括多个功能组件,功能组件有向对应的用户界面ui,例如,不同的场景对应的不同的用户界面。一个ui中可能包括多个节点,每个节点都会有相应的贴图。
本实施例中,会对预设应用中所有的ui中的节点进行遍历。统计出贴图的使用频率。
在一个可选的实施例中,第一获取模块42包括:创建单元,用于创建登录账号,其中,登录账号用于解锁多个功能组件对应的ui,以使多个功能组件对应的ui在预设应用运行时处于开启状态;开启单元,用于通过登录账号开启多个功能组件对应的ui。
在一个可选的实施例中,第二获取模块44包括:递归单元,用于递归遍历获取到的ui中的节点;统计单元,用于统计多个功能组件对应的ui中每个ui下各个节点对应的贴图的使用次数。
在一个可选的实施例中,获取预设应用下多个功能组件对应的用户界面ui,需要创建登录账号,登录账号用于解锁多个功能组件对应的ui,以使多个功能组件对应的ui在预设应用运行时处于开启状态;通过登录账号开启多个功能组件对应的ui。解锁多个功能组件对应的ui可以更加全面的统计出贴图的使用频率。创建登录账号可以避免ui界面未解锁的情况出现。
在一个可选的实施例中,统计每个ui中的节点对应的贴图的使用频率包括:递归遍历获取到的ui中的节点;统计多个功能组件对应的ui中每个ui下各个节点对应的贴图的使用次数。例如:在启动游戏客户端,并利用登录帐号登录之后,将游戏的所有ui界面依次打开,对每个界面所持有的节点递归遍历,获取界面中节点所有用到的贴图信息并记录。然后,统计记录每个节点对应的小贴图的使用情况。使用情况包括贴图对应使用ui界面的名称和使用次数。并根据使用情况将每个ui下各个节点对应的贴图的使用次数按照降序排列,根据排序结果和第一存储区域的存储容量将第一部分贴图存储至第一存储区域以及将第二部分贴图存储至第二存储区域,其中,第二存储区域与每个贴图所关联的ui标识对应。需要说明的是,第一存储区域可以是共用文件夹,第二存储区域可以是以界面命名的文件夹。
此外,第一部分贴图可以是使用频率比较高的贴图,第二部分贴图可以是使用频率比较低的贴图。
在一个可选的实施例中,在对第一部分的贴图和第二部分的贴图进行存放之后,会将第一存储区域内的贴图合并为第一目标贴图,以及将第二存储区域内与同一个ui标识对应的贴图合并为第二目标贴图,确定待使用的贴图路径,其中,待使用的贴图路径用于描述第一目标贴图和第二目标贴图的存储位置;将每个ui的初始贴图路径修改为待使用的贴图路径;通过待使用的贴图路径加载每个ui对应的第一目标贴图和第二目标贴图。在本实施例中,第一目标贴图是第一存储区域内的各个小贴图合并而成的一张大贴图。第二目标贴图是第二存储区域中的各个小贴图合并成的一张大贴图。在对贴图进行合并之后,需要重新修改路径加载合并之后的贴图。本实施例中对贴图的合并有效的提高了游戏打开ui界面时加载贴图的有效性和准确性,提高了实际游戏运行时的ui贴图使用率。
需要说明的是,上述装置可以位于上述图1所示的终端中,但并不限于此。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
s1,获取预设应用下多个功能组件对应的用户界面ui;
s2,统计每个ui中的节点对应的贴图的使用频率;
s3,根据对使用频率的统计结果将贴图存放在对应的存储区域;
s4,在同一ui中加载存储区域存储的对应贴图。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
s1,获取预设应用下多个功能组件对应的用户界面ui;
s2,统计每个ui中的节点对应的贴图的使用频率;
s3,根据对使用频率的统计结果将贴图存放在对应的存储区域;
s4,在同一ui中加载存储区域存储的对应贴图。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。