Unity3D中如何面对优化不再束手无策---Profiler性能分析

2023-10-31 03:50

本文主要是介绍Unity3D中如何面对优化不再束手无策---Profiler性能分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一说到优化,相信很多人都会头大,心想这个难搞,无从下手,束手无策。但是优化是游戏开发必不可少的。也是必须要走的一条路,或许叫一道坎也不为过。为什么呢?游戏玩的就是体验。如果你的游戏给人的体验极差,那么你觉得还有人会玩你的游戏吗?游戏体验不仅仅是游戏的玩法,同时还有其他的因素。比如性能啊等等。所以你会发现,游戏公司会优化的人是很吃香的。但是由于它还是有一定的难度。所以会的人也是比较少的。很多人都知道优化很重要,但是却不知道从何下手。因为他自己都不知道哪里需要优化。绝大部分是这样的。其实优化没有那么难,不信的话,咱们继续看。

今天给大家带来的是性能优化的”葵花宝典”,哈哈。我们在unity中怎么看自己的项目的性能情况呢?相信很多人都会说,我们看state面板属性进行分析啊!这个地方确实是可以看出一点东西的。但是它只能看个大概,能解决部分问题。也就是治标不治本。那么我们该怎么才能找到我们性能的严重耗损点呢。这个时候我们就需要看Profiler了。它是什么?它是性能分析器(姑且这么叫它),它可以比state更加清晰的看清楚你的项目哪些地方性能消耗严重。怎么打开呢?Window->Profiler,就可以看到了。它主要包含CPU,GPU,Render,内存,声音,视频,网络,物理系统等模块的性能消耗情况。如图:

比如这里我们运行一个项目,然后可以看看它的性能情况,如下图:

 

我们可以很清楚的看到我们CPU ,GPU的消耗情况。在这里我们来说下最下面的一些函数吧。这些函数就是Unity列举出来的性能消耗的主要函数。从这里你就能看到你的项目到底是哪里出现了问题了,然后就逐个问题逐个解决。这样就能达到优化的目的了。让你不再是无头苍蝇一样。不知所措。

比如我这个项目,在mono这个模块中,消耗占比都有写出,哪些函数消耗多少性能,一帧调用多少次等等。还有一个值得注意的点。最上面占比最大的是WaitfortargetFPS,这个玩意儿是什么呢?我们都知道一个游戏比较好的FPS是60左右。那么有时候我们的FPS可能会高,可能会底,那么我们FPS太高的话,虽然好,但是会浪费性能,太低的话,游戏体验不好,所以我们要尽量的保持到60左右是最好的。那么怎么做的?如果是高于60帧的,我们就会有多余的时间,那么多余的时间,我们的CPU就可以做其他的事情了。如果没有其他事情做,它就会休眠一段时间来等待下一帧的到来,那么休眠等待的这个,就是waitfortargetFPS.如果低于60 的话,它会怎么办?那肯定是疯狂做它该做的事情啊。事情的做不完,还想休息?不存在的!

至于其他的几个模块,我就不一一的带着大家来说了,感兴趣的自己研究下。这一块还是很有含金量的。好了,本次的分享到此为止。不喜勿喷哦!

点击链接关注灿烂的星海游戏开发并加入群聊【cocos/unity游戏开发交流】来获得更多的学习资料。
————————————————
版权声明:本文为CSDN博主「Clank的游戏栈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/voidinit/article/details/107480539

这篇关于Unity3D中如何面对优化不再束手无策---Profiler性能分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312632

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable