次元羊游戏资讯网

决战沙邑
当前位置:首页>游戏评测 >

unity内存占用分析-干货分享-游戏性能分析怎么做-unity内存要求

作者:次元羊 时间:2023-10-10 08:16:56阅读:(9)

游戏优化的基本概念目标提升游戏帧率和稳定性,使玩家的游戏体验更加流畅改善游戏的画面效果,提升吸引力,使游戏获得更好的口碑降低游戏对计算和存储资源的需求,使更多的玩家能体验到我们的游戏优化的目的通常在于让游戏具有更高的流畅度、更好的画面效果和更低的资源需求。

但是这三者存在制约关系 更好的画面效果需要更多的、 更复杂的计算,在一定程度上影响游戏的流畅度 要想同时保证画面效果和流畅度,游戏势必会有更高的硬件需求因此,需要在这三种需求之间找到一种平衡在商业游戏项目中,还要考虑时间、 人力、 资金等成本问题,需要进行更多的权衡。

例如,可以通过精妙复杂的算法,在不提高硬件需求的前提下,保证画面效果和流畅度次元羊 这往往需要更多的研发时间和人力成本在优化工作中,必须明确优化的目的和内容 还要选择正确的评价指标,按照评价指标,测量优化工作的进展情况。

如果优化目的是流畅度,应该把帧率作为评价指标 如果优化目的是画面效果,应该把视觉体验作为评价指标如果优化目的是内存,应该把游戏运行时占用的内存空间大小作为评价指标其它方面的优化也需要找到合适的评价指标,凭直觉寻找优化的方向是不可取的。

尤其是在复杂的游戏项目中,应该把性能分析数据作为优化的首要依据Unity 提供了一个功能强大的性能分析工具 Profiler 我们可以借助 Profiler 快速找到游戏的性能瓶颈,然后有针对性地展开优化。

我们可以通过多种手段优次元羊化游戏,比如使用更精妙的数据结构和算法,使用更先进的技术也能够提升游戏程序的性能计算机图形学技术的发展和显卡硬件更新换代,是推动游戏行业前进的动力之一很多时候,优化游戏意味着在各种需求之间寻找平衡点,但是优化工作不宜过早。

计算机程序设计艺术的作者,Knuth 大师曾经说过 "过早优化是万恶之源",让正确的程序更快比让快速的程序正确要容易得多 通常情况下,我们应该把注意力放在游戏程序的正确性以及脚本代码的清晰和易读性方面其次,才是为优化做考虑。

Unity 游戏性能分析工具Unity Profiler 介绍Profiler 能以直观的方式,显示游戏运行时,各种资源的占用情况,包括 CPU、GPU、次元羊渲染、内存、音频以及物理等方面打开 Profiler 视图。

依此选择菜单栏中的 Window -> Profiler,打开 Profiler 视图Profiler 使用方法打开 Profiler 录制功能,点击 Play 按钮,执行游戏预览Profiler 会自动记录游戏运行时的性能数据,并显示在分析器时间轴上。

分析器时间轴时间轴左侧的头部,标明了每条分析器时间轴所记录的内容内容包括 CPU 使用率,GPU 使用率,Renderer 渲染,Memory 内存,Audio 音频,Physics 物理,Physics2D 二维物理等。

每条分析器时间轴用不同的颜色显示不同的信息,可以在时间轴头部看到次元羊对应的关系表CPU 使用率分析器记录了渲染,脚本物理系统,垃圾回收器等操作的 CPU 使用情况内存分析器时间轴,通过折线图展示内存消耗的变化情况。

记录的内容包括每帧中,纹理和网格资源的内存占用量,材质和对象的总数,以及 GC 分配的内存大小Overview 窗口在分析器时间轴上选择一帧后,可以在 Profiler 视图底部的 Overview 窗口看到所选帧的详细信息。

在 CPU Usage 时间轴上单击选中某帧,Profiler 视图底部的 Overview 窗口会显示该帧中,各个函数的运行时间和占用的内存空间大小在 Memory 分析器时间轴上单击选中某帧,Profiler 视图底部的 O次元羊verview 窗口会显示该帧中各种资源对内存的详细占用情况。

Profiler 工具栏Profiler 视图顶部是工具栏,右侧的 Frame 显示了当前统计的总帧数,以及选中帧的序号右侧的小三角用于切换上一帧和下一帧,Current 按钮用于跳转至记录中的最新一帧。

开启 Deep Profiler 后,所有的函数调用都会被记录,这样能够确切的统计出游戏代码花费的所有时间,但是占用内存较高,会影响游戏运行效率针对 Deep Profiler 的局限性,我们可以在代码中,插入 Profiler.BeginSample(name:string);和 Profiler.EndSample(); 来手动次元羊开启和关闭代码分析。

//玩家跳跃函数 voidJump(boolisGround){Profiler.BeginSample("MyProfiler - FPSPlayerMove");if(CrossPlatformInputManager

.GetButtonDown("Jump")&&isGround){Thread.Sleep(100);rigid.AddForce(Vector3.up*jumpVelocity,ForceMode.

VelocityChange);if(anim!=null)anim.SetBool("isJump",true);}else{if(ani次元羊m!=null)anim.SetBool("isJump",false

);}}保存代码,再次运行深度分析。可以在 Profiler 视图 Overview 窗口中看到相应的统计结果,消耗时间约为 100 毫秒。

Profiler 的远程分析功能Profiler 提供了远程分析功能,允许开发者对脱离 Unity 编辑器独立运行的游戏程序进行性能分析Profiler 远程分析的步骤构建可分析的 Unity 游戏程序或安装包。

在设备上运行可分析的 Unity 游戏程序使用 Profiler ,通过 IP 地址,与设备上独立运行的游戏程序建立连接,开始分析游戏附加阅读资料Unity性能分析工具 Prof次元羊iler (http://

docs.unity3d.com/Manual/Profiler.html)

推荐阅读