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

相关文章

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

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S