一种降低手机游戏Shader模块内存占用的方法及装置制造方法及图纸

技术编号:21377679 阅读:26 留言:0更新日期:2019-06-15 13:23
本发明专利技术涉及一种降低手机游戏Shader模块内存占用的方法及装置。其中方法包括:启动Unity编辑器查找所有的Shader类型资源,以获得其资源列表;根据所述资源列表,逐个加载Shader文件;以反射调用的方式得到的接口,将Shader对象以布尔参数传入接口,执行获取到此Shader的变体数,并将变体数写入文件保存;对变体进行排序,对变体数量多的Shader文件进行分析,优化掉Shader变体量大的Shader文件。其中装置包括存储器和处理器,以被配置为实施上述方法。本发明专利技术通过统计Shader变体数,通过对其数量排序后,使游戏开发人员能够更快更准的对其变体量大的文件进行优化,从而降低游戏程序的内存占用。

【技术实现步骤摘要】
一种降低手机游戏Shader模块内存占用的方法及装置
本专利技术涉及一种降低手机游戏Shader模块内存占用的方法及装置,属于游戏软件

技术介绍
在手机游戏成为主流后,游戏的重度已经越来越重,运行时内存占用也越来越高,如何减小运行时内存大小,提升游戏帧率,成为了影响游戏品质的一个重要环节,运行时内存越小,意味着被系统清理掉的概率越小。在使用Unity引擎开发的游戏中,Shader模块占用的内存占用了整个游戏进程内存的一部分,而降低Shader模块内存也是降低游戏内存的一个重要方面。在Shader中关键字(keyword)的数量直接影响变体(Variant),而Variant的数量则会影响ShaderLab的内存大小,同时也影响Shader的解析与编译时间,因而影响内存大小和游戏帧率。
技术实现思路
本专利技术提供一种降低手机游戏Shader模块内存占用的方法及装置。本专利技术的技术方案第一方面为一种降低手机游戏Shader模块内存占用的方法及装置,所述方法包括以下步骤:A、启动Unity编辑器查找所有的Shader类型资源,以获得其资源列表;B、根据所述资源列表,逐个加载Shader文件;C、以反射调用的方式得到的接口,将Shader对象以布尔参数传入接口,执行获取到此Shader的变体数,并将变体数写入文件保存;D、对变体进行排序,对变体数量多的Shader文件进行分析,优化掉Shader变体量大的Shader文件。进一步,所述步骤A包括:预先加载Unity的动态链接库文件,启动编辑器查找所有的Shader类型资源。进一步,所述步骤B还包括:根据所述资源列表,统计Shader文件所对应的关键字。进一步,所述步骤C包括:将Shader对象与布尔参数为真的传入接口执行获取相应的Shader文件中的变体数,并将变体数写入文件保存;根据变体数量进行Shader文件排序,对变体数量多的Shader文件进行分析。进一步,所述步骤D包括:处理关键字数量超过阈值的Shader文件,以降低内存占用量。优选地,该方法在监测到手机可用内存低于预设值时实施。本专利技术的技术方案第二方面为一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,所述处理器执行所述程序时实施上述的步骤。本专利技术的技术方案第三方面为一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实施上述的步骤。本专利技术的有益效果为:提出降低手机游戏Shader模块内存占用的方法及装置;可以有效的为开发人员对优化游戏,提升画面每秒传输帧数(FPS),且在减少运行时内存占用提供有效的优化方向,提升了游戏开发人员的开发效率。附图说明图1所示为根据本专利技术的方法的总体流程图。具体实施方式以下将结合实施例和附图对本专利技术的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本专利技术的目的、方案和效果。参考图1,根据本专利技术的方法包括以下步骤:A、启动Unity编辑器查找所有的Shader类型资源,以获得其资源列表;B、根据所述资源列表,逐个加载Shader文件;C、以反射调用的方式得到的接口,将Shader对象以布尔参数传入接口,执行获取到此Shader的变体数,并将变体数写入文件保存;D、对变体进行排序,对变体数量多的Shader文件进行分析,优化掉Shader变体量大的Shader文件。对于步骤C,Unity编辑器提供查找单个Shader变体数量的查看,但是在选择相应Shader之后还需要点击菜单Compileandshowcode才能显示变体数量,并且没有相应接口提供给开发人员,因此可以通过反射调用其Unity编辑器调用的接口即可拿到想要的数据。具体地,以反射调用的方式获取变体数的步骤如下:加载UnityEditor.dll符号文件;通过反射获取UnityEditor.ShaderUtil类型;通过反射获取其GetComboCount方法;调用其GetComboCount方法获取到当前shdaer文件的Variant数量;将所有Shader文件的Variant数量写入文件中。此外,还可以通过的实例来描述根据本专利技术的方法实施过程。这里选取一个具体手机游戏进行实施:第一步:启动编辑器查找所有的Shader类型资源,得到其资源列表;第二步:根据资源列表逐个加载Shader文件;第三步:利用反射得到的接口,将Shader对象与bool参数true传入接口执行获取到此Shader的变体数,并将变体数写入文件保存;第四步:进行有关变体数量的文件排序,对变体数量多的Shader文件进行分析,通过减少无用关键字,以减少变体数。应当认识到,本专利技术实施例中的方法步骤可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本专利技术的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的专利技术包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本专利技术所述的方法和技术编程时,本专利技术还包括计算机本身。计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本专利技术优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。以上所述,只是本专利技术的较佳实施例而已,本专利技术并不局限于上述实施方式,只要其以相同的手段达到本专利技术的技术效果,凡在本专利技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本专利技术保护的范围之内。在本专利技术的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。本文档来自技高网...

【技术保护点】
1.一种降低手机游戏Shader模块内存占用的方法,其特征在于,所述方法包括以下步骤:A、启动Unity编辑器查找所有的Shader类型资源,以获得其资源列表;B、根据所述资源列表,逐个加载Shader文件;C、以反射调用的方式得到的接口,将Shader对象以布尔参数传入接口,执行获取到此Shader的变体数,并将变体数写入文件保存;D、对变体进行排序,对变体数量多的Shader文件进行分析,优化掉Shader变体量大的Shader文件。

【技术特征摘要】
1.一种降低手机游戏Shader模块内存占用的方法,其特征在于,所述方法包括以下步骤:A、启动Unity编辑器查找所有的Shader类型资源,以获得其资源列表;B、根据所述资源列表,逐个加载Shader文件;C、以反射调用的方式得到的接口,将Shader对象以布尔参数传入接口,执行获取到此Shader的变体数,并将变体数写入文件保存;D、对变体进行排序,对变体数量多的Shader文件进行分析,优化掉Shader变体量大的Shader文件。2.根据权利要求1所述的方法,其特征在于,所述步骤A包括:预先加载Unity的动态链接库文件,启动编辑器查找所有的Shader类型资源。3.根据权利要求2所述的方法,其特征在于,所述步骤B还包括:根据所述资源列表,统计Shader文件所对应的关键字。4.根据权利要求1...

【专利技术属性】
技术研发人员:李星蔡其锋陈凯武张强
申请(专利权)人:珠海金山网络游戏科技有限公司珠海西山居移动游戏科技有限公司
类型:发明
国别省市:广东,44

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

1